Eclipse教程1 - 3分钟理清Maven依赖

简介: * 作者: 韩勇 * 日期: 2018-12-02 ## 前言     大学学习 Java 时开始接触 Eclipse,喜欢其强大和方便,并立志成为一名 Java 开发。然而近几年 Eclipse 的流行度开始下滑,一方面有 Eclipse 自身的不足(安装插件需要科学上网,新版卡顿、报错),一方面我在想是不是 Eclipse 更适合我这样熟练
  • 作者: 韩勇
  • 日期: 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-clientgrpc-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 依赖视图如下。左边是依赖树,右边是解析之后的依赖列表。

图片.png

分析特定 Maven 依赖

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

图片.png

一下子清晰了很多,左边可看到 slf4j-apiasync-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 依赖详情如下。

图片.png

  • 可看到 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 的情况。

图片.png

查看和定位管理的依赖版本

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

图片.png

查看最终生效的 Maven 配置

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

图片.png

可看到本项目继承设置了 Java 编译版本为 1.8,还可看到其他所有属性定义,依赖版本,插件配置等配置。

Eclipse 对 Maven 进行了非常好的集成支持,还有其他许多功能,可以在实际使用中发现和体验。

友好排版请 阅读原文

相关文章
|
3月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
3月前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
13天前
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
43 10
|
10天前
|
IDE Java PHP
Eclipse 教程
Eclipse 教程
11 5
|
1月前
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
88 2
eclipse创建maven项目
|
26天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
1月前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
524 3
|
1月前
|
Java Maven
Maven 依赖管理
Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
74 5
|
2月前
|
Java Maven
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
37 5
|
3月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
99 2
【前端学java】全网最详细的maven安装与IDEA集成教程!