本文共 3463 字,大约阅读时间需要 11 分钟。
大学学习 Java 时开始接触 Eclipse,喜欢其强大和方便,并立志成为一名 Java 开发。然而近几年 Eclipse 的流行度开始下滑,一方面有 Eclipse 自身的不足(安装插件需要科学上网,新版卡顿、报错),一方面我在想是不是 Eclipse 更适合我这样熟练使用 Eclipse 的用户,而不是普通 Java 开发。我觉得我应该写一些教程,帮助大家了解和使用 Eclipse,作为对 Eclipse 社区的回馈。
首先需要安装 JDK,Linux(或 Cygwin)下可使用 安装(需要科学上网)。
sdk install java 8.0.191-oracle
下载解压 Eclipse Java 开发软件包,可从国内镜像加速下载,如 。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.gztar xf eclipse-java-oxygen-3a-linux-gtk-x86_64.tar.gzmv -T eclipse eclipse-java-oxygen-3a
进入解压后的目录,建议对 eclipse.ini
进行简单配置修改:
-vmargs
前添加 -vm
设置 jdk bin 路径。-Xms
, -Xmx
参数修改为 1024m
。Linux 下可使用如下命令快速完成配置,完整配置说明参考 。
( 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 -ised -r -e $'/^--launcher.appendVmargs/ i --launcher.GTK_version\\\n2' -e '/^--launcher.GTK_version/,+1 d' eclipse.ini -i
最后执行解压目录下的 eclipse
即可启动。
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
文件内容如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE hello hello 0.0.1-SNAPSHOT org.asynchttpclient async-http-client 2.6.0 io.grpc grpc-netty 1.6.1
保存 pom 文件,Eclipse 自动开始解析并下载缺失依赖,完成后按 "Alt+F5" 快捷键更新 Maven 项目配置。
切换到 "Dependency Hierarchy" 标签页,即可看到 Maven 依赖视图如下。左边是依赖树,右边是解析之后的依赖列表。
依赖太多看的眼花,假如我们要排查某个具体库的依赖情况,如 slf4j-api
,只需在右上角 "Filter" 输入 slf4j
模糊匹配,即可只显示相关库的依赖路径,如下图所示。
一下子清晰了很多,左边可看到 slf4j-api
在 async-http-client
的依赖树上被间接依赖了两次。
(omitted for conflict with 1.7.25)
,表示依赖路径过深,与更短依赖路径上的版本 1.7.25
冲突(虽然当前版本也是 1.7.25
)被排除掉。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
都被管理为此版本。为简单起见,依赖视图默认只显示 artifactId ,如果要查看 groupId ,可点击 "Show GroupId" 按钮切换显示 groupId。显示 groupId 可排查不同 groupId 同名 artifactId 的情况。
如果在 pom 文件中依赖一个被管理的依赖,鼠标放上去即可看到被管理的依赖版本号,还可以点击跳转到定义此依赖管理的地方。
本项目中并没有直接定义依赖管理,而是从 parent 继承的。除了依赖管理,Maven 还会继承合并属性配置,插件配置等配置。点击 "Effective POM" 标签页,可查看当前项目继承合并所有配置后,最终生效的配置。
可看到本项目继承设置了 Java 编译版本为 1.8
,还可看到其他所有属性定义,依赖版本,插件配置等配置。
Eclipse 对 Maven 进行了非常好的集成支持,还有其他许多功能,可以在实际使用中发现和体验。
友好排版请 。
转载地址:http://fyaga.baihongyu.com/