IDEA下解决Maven依赖冲突

本文详细介绍了解决Maven依赖冲突的三种方法:使用Maven-Helper插件、通过pom.xml文件操作以及运用Maven命令。同时,文章还总结了Maven依赖管理的基本原则,包括依赖的唯一性、依赖传递性、最短路径优先和依赖作用域影响等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:问题背景.

    Maven依赖使用方便,但是出现了依赖冲突后,一般如何解决呐?本文将以IDEA为开发工具介绍一下.

                                            方式一:使用Maven-Helper插件(推荐)

    1.1 Maven插件准备.(Maven-Helper插件).

 下载后,重新启动IDEA,即可使用.

1.2 Maven-Helper使用.

点击项目的pom.xml文件.

目前项目使用的版本号是2.5的.但是有2.3的依赖存在,导致发生了冲突,如果有许多的version的,也只会使用一个其他的就会标红表示发生了依赖冲突的.

方式一:查找Source所在的位置.

方式二 查找source所在的位置.

 1.3 目前是发现了冲突所在的详细位置了,接下来就是解决冲突了.

   

   

                                                   方式二(pom.xml文件鼠标右键)

但是这个oss对象的依赖包的冲突解决了,但是会出现问题,由于那个common-lang是Apache的工具类,那个<exclusion>标签又不加version标签,如果去掉那里这里的2.3的版本和2.5的版本就都去掉了.显然是不合理的.不建议去掉这里的冲突.

                                                        方式三(Maven命令)

mvn dependency:tree -Dverbose -Dincludes=<groupId>:<artifactId>

mvn dependency:tree -Dverbose -Dincludes=com.alibaba:fastjson

简单总结一个Maven依赖冲突管理中的几个原则:

  1. 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成。如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的。(唯一性)
  2. 依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C。(依赖传递性)
  3. Maven对同一个groupId, artifactId的冲突仲裁,不是以version越大越保留,而是依赖路径越短越优先,然后进行保留。(最短路径),
  4. 依赖的scope会影响依赖的影响范围的.
  5. 子pom依赖会优先与父pom.

两个原则:①:最短路径优先。②:相同路径时先声明优先依赖

附:IDEA自动下载文档和源码配置:

      ①:Ctrl+Alt+S

     ②:项目里面如何下载文档和源码如下:

     ③:如何项目中下载的源码类查看文档

     Ctrl+Q

     ④:查看源代码:

    按住Ctrl键,然后鼠标左键即可看到

附录:IDEA拉取https仓库跳过证书校验

一般大型项目,内网多Maven仓库基本都是https的二方仓库,不同的组件会发布到一些公司自研的仓库中,这个时候就需要在构建脚本中跳过https的校验,mvn clean package -gs settings.xml

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

【解决Maven大型项目导入内网二方包,飘红问题,一般来说就是Maven的缓存所致,清楚一下重新编译,Https构建速度比较快】 

 另外一点,如果是项目目录下的settings的更新后还是拉取jar包失败,这个时候可能删除一下settings的文件,再重新添加一下即可,Maven缓存所致.

【排除一些低版本的依赖包,然后在pom中高版本的包,注意新旧特性是否兼容】,或者是直接升级三方依赖包.

查找依赖方式

Ctrl+F 

依赖分析命令:

mvn dependency:tree -Dverbose -Dincludes=snappy-java

mvn dependency:tree -Dverbose -Dincludes=<groupId>:<artifactId>(指定依赖的冲突)

mvn -X compile dependency:tree -Dverbose >a.log(分析指定的依赖关系并重定向至文件中)

mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false(打包跳过测试)

mvn dependency:tree -Dverbose(分析项目中所有jar冲突)

mvn dependency:tree -Dverbose |grep "omitted for duplicate" 【Linux】

windows下查询冲突. 

mvn dependency:tree -Dverbose |find "omitted for duplicate"【Windows】

新版IDEA推荐升级情况 

问题:一般使用新版本IDEA开发工具,使用的是公司通用的Maven的配置Settings的文件,发现部分jar拉不下来。

思考:新版IDEA和老版本自己装的Maven不匹配,自己安装的Maven版本较低,使用IDEA内置Maven即可 

IDEA下内置Maven版本查看:

在安装目录下的plugins/maven/lib/maven3

D:\IDEA\IntelliJ IDEA 2022.2.3\plugins\maven\lib\maven3

### 解决未找到有效Maven安装的问题 #### 配置环境变量 当遇到提示“未找到有效的 Maven 安装”的错误时,通常是因为系统的环境变量配置不正确。为了使系统能够识别并使用已安装的 Maven 版本,需确保 `M2_HOME` 和 `PATH` 环境变量已经正确定义[^1]。 对于 Windows 用户来说,在高级系统设置中的环境变量部分添加如下条目: - **变量名**: `M2_HOME` - **变量值**: Maven 的安装路径,例如 `C:\Program Files\Apache Software Foundation\apache-maven-3.x.x` 接着更新 PATH 变量以包含 `%M2_HOME%\bin` 这样可以使得命令行工具可以直接调用 mvn 命令[^3]。 #### IDEA 中配置 Maven 主目录 如果是在 IntelliJ IDEA 开发环境中遇到了此问题,则可能是由于IDE本身未能检测到本地的 Maven 设置所致。此时应该进入 File -> Settings (Ctrl+Alt+S),导航至 Build, Execution, Deployment -> Build Tools -> Maven 并手动指定 Maven home path 或者让 IDE 自动下载所需的版本[^2]。 #### 检查 JDK/Java 安装情况 另一个常见的原因是缺少适当版本的 Java Development Kit(JDK)或者是 `JAVA_HOME` 环境变量没有被设定好。这可以通过执行 java -version 来验证当前使用的 Java 版本,并通过调整 `JAVA_HOME` 来指向正确的 JDK 路径来解决问题。 ```bash echo %JAVA_HOME% java -version ``` 以上操作完成后重启计算机以及开发工具以便更改生效。再次尝试运行项目之前先确认所有的环境变量都已经按照上述指导进行了相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道之简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值