- 作者: 韩勇
- 日期: 2018-12-02
前言
大学学习 Java 时开始接触 Eclipse,喜欢其强大和方便,并立志成为一名 Java 开发。然而近几年 Eclipse 的流行度开始下滑,一方面有 Eclipse 自身的不足(安装插件需要科学上网,新版卡顿、报错),一方面我在想是不是 Eclipse 更适合我这样熟练使用 Eclipse 的用户,而不是普通 Java 开发。我觉得我应该写一些教程,帮助大家了解和使用 Eclipse,作为对 Eclipse 社区的回馈。
安装 Eclipse
首先需要安装 JDK,Linux(或 Cygwin)下可使用 sdkman 安装(需要科学上网)。
sdk install java 8.0.191-oracle
下载解压 Eclipse Java 开发软件包,可从国内镜像加速下载,如 USTC eclipse 镜像 。Eclipse 当前最新发布版为 2018-09 (4.9),个人试用感觉不成熟稳定(不知道是不是 Linux GTK 版的问题),还是推荐安装 Oxygen (4.7) 版本。解压后文件夹名默认为 eclipse,个人习惯修改为具体软件包名,如 eclipse-java-oxygen-3a。
curl -O http://mirrors.ustc.edu.cn/eclipse/technology/epp/downloads/release/oxygen/3a/eclipse-java-oxygen-3a-linux-gtk-x86_64.tar.gz
tar xf eclipse-java-oxygen-3a-linux-gtk-x86_64.tar.gz
mv -T eclipse eclipse-java-oxygen-3a
进入解压后的目录,建议对 eclipse.ini 进行简单配置修改:
-
-vmargs前添加-vm设置 jdk bin 路径。 -
-Xms,-Xmx参数修改为1024m。 - 当前 Eclipse 版本在 Linux 下指定使用 GTK 2 更稳定友好。
Linux 下可使用如下命令快速完成配置,完整配置说明参考 Eclipse 运行时参数文档 。
( vm=$'-vm\\\n'"$(readlink -f "${JAVA_HOME}")/bin/" && sed -e '/^-vmargs$/ i '"${vm}" -e '/^-vm$/,+1 d' eclipse.ini -i )
sed -r -e 's#^(-Xms|-Xmx)[0-9].*$#\11024m#g' eclipse.ini -i
sed -r -e $'/^--launcher.appendVmargs/ i --launcher.GTK_version\\\n2' -e '/^--launcher.GTK_version/,+1 d' eclipse.ini -i
最后执行解压目录下的 eclipse 即可启动。
3 分钟理清 Maven 依赖
新建或导入 Maven 项目
Eclipse 完美支持 Maven,可直接新建或导入 Maven 项目(不要使用 mvn eclipse:eclipse,那玩意儿早就过时了)。Maven 依赖很多时常常让人头疼,使用 Eclipse 可以快速、清晰、方便的查看和管理 Maven 依赖。
假设一个项目同时依赖了 async-http-client 和 grpc-netty 。使用 Eclipse 新建一个 "Maven Project",向导界面勾选 "Create a simple project(skip archetype selection)" ,"Group Id" 和 "Artifact Id" 输入 hello。编辑 pom.xml 文件内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<groupId>hello</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.asynchttpclient</groupId>
<artifactId>async-http-client</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
</project>
保存 pom 文件,Eclipse 自动开始解析并下载缺失依赖,完成后按 "Alt+F5" 快捷键更新 Maven 项目配置。
查看 Maven 依赖树
切换到 "Dependency Hierarchy" 标签页,即可看到 Maven 依赖视图如下。左边是依赖树,右边是解析之后的依赖列表。


分析特定 Maven 依赖
依赖太多看的眼花,假如我们要排查某个具体库的依赖情况,如 slf4j-api,只需在右上角 "Filter" 输入 slf4j 模糊匹配,即可只显示相关库的依赖路径,如下图所示。


一下子清晰了很多,左边可看到 slf4j-api 在 async-http-client 的依赖树上被间接依赖了两次。
- 一次提示
(omitted for conflict with 1.7.25),表示依赖路径过深,与更短依赖路径上的版本1.7.25冲突(虽然当前版本也是1.7.25)被排除掉。 - 另一次出现在最短的依赖路径,作为最终依赖保留,依赖 scope 是
compile。 - 右边依赖列表突出显示最终依赖版本为
slf4j-api:1.7.25[compile]。
清空 "Filter" 过滤条件,直接在右边依赖列表中点击一个依赖,即可查看其依赖解析情况。如点击查看 netty-handler 依赖详情如下。


- 可看到
netty-handler最短依赖路径是第一处被async-http-client依赖,其中(managed from 4.1.30.Final)表示async-http-client原本依赖的是4.1.30.Final版本,但因为当前项目配置了依赖版本管理(即dependencyManagement),被管理为4.1.31.Final。 - 依赖版本管理直接指定了最终依赖版本,依赖树上的所有
netty-handler都被管理为此版本。
显示 Maven groupId
为简单起见,依赖视图默认只显示 artifactId ,如果要查看 groupId ,可点击 "Show GroupId" 按钮切换显示 groupId。显示 groupId 可排查不同 groupId 同名 artifactId 的情况。


查看和定位管理的依赖版本
如果在 pom 文件中依赖一个被管理的依赖,鼠标放上去即可看到被管理的依赖版本号,还可以点击跳转到定义此依赖管理的地方。


查看最终生效的 Maven 配置
本项目中并没有直接定义依赖管理,而是从 parent 继承的。除了依赖管理,Maven 还会继承合并属性配置,插件配置等配置。点击 "Effective POM" 标签页,可查看当前项目继承合并所有配置后,最终生效的配置。


可看到本项目继承设置了 Java 编译版本为 1.8,还可看到其他所有属性定义,依赖版本,插件配置等配置。
Eclipse 对 Maven 进行了非常好的集成支持,还有其他许多功能,可以在实际使用中发现和体验。
友好排版请 阅读原文 。
本文详细介绍如何在Eclipse中安装配置JDK,选择稳定版本,以及通过实例演示如何使用Eclipse高效管理Maven项目依赖,包括依赖树的查看、特定依赖的分析、依赖版本的管理和最终Maven配置的查看。
1395

被折叠的 条评论
为什么被折叠?



