首页 > 其他分享 >解决Maven依赖冲突

解决Maven依赖冲突

时间:2023-09-13 17:24:50浏览次数:41  
标签:依赖 some artifact Maven 冲突 版本

Maven依赖冲突是一个很常见的问题,它通常发生在项目中有多个依赖包含相同库的不同版本时。解决Maven依赖冲突的几种常用方法如下:

1、显示依赖树

首先,使用以下命令查看项目的依赖树,以确定哪些依赖导致了冲突:

mvn dependency:tree

2、排除依赖

知道了有哪些依赖导致冲突,那么在pom.xml中,我们就可以使用<exclusions>标签来排除不需要的依赖。

<dependency>
     <groupId>com.some.group</groupId>
     <artifactId>some-artifact</artifactId>
     <version>1.0.0</version>
     <exclusions>
         <exclusion>
             <groupId>com.conflict.group</groupId>
             <artifactId>conflict-artifact</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

3、指定依赖版本

如果项目依赖多个版本的同一个库,Maven默认会使用最高版本。但是你也可以明确指定需要的版本。

<dependency>
     <groupId>com.some.group</groupId>
     <artifactId>some-artifact</artifactId>
     <version>1.0.0</version>
 </dependency>

4、使用<dependencyManagement>

在多模块项目中,你可以在父POM中使用<dependencyManagement>来统一管理所有子模块的依赖版本。

<dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>com.some.group</groupId>
             <artifactId>some-artifact</artifactId>
             <version>1.0.0</version>
         </dependency>
     </dependencies>
 </dependencyManagement>

子模块只需要声明需要用到的依赖,不需要指定版本。

5、使用properties来管理版本

还可以使用Maven的properties元素来更简单地管理依赖版本。

<properties>
     <some-artifact.version>1.0.0</some-artifact.version>
</properties>
 ​
<dependencies>
     <dependency>
         <groupId>com.some.group</groupId>
         <artifactId>some-artifact</artifactId>
         <version>${some-artifact.version}</version>
     </dependency>
</dependencies>

6、强制使用某个版本

在极端情况下,可以通过<dependencyManagement>中的<exclusions><version>同时使用,来强制Maven使用特定版本的依赖。

7、解决插件冲突

依赖冲突不仅仅可能出现在项目的库依赖中,还可能出现在插件依赖中。确保插件的版本也没有冲突。

8、重新构建和测试

解决冲突后,不要忘记运行mvn clean install来重新构建项目,并执行全面的测试以确保没有破坏任何功能。

注意:解决依赖冲突可能会引入运行时错误,因此在修改依赖后务必进行全面的测试。

标签:依赖,some,artifact,Maven,冲突,版本
From: https://www.cnblogs.com/until/p/17700201.html

相关文章

  • windows下安装maven
    1.下载地址:https://archive.apache.org/dist/maven/maven-3/PS:推荐下载3.8.x,最新的3.9.x在打包时可能会出错。2.配置本地仓库maven默认的本地仓库地址为 ${user.home}/.m2/repository ,也就是在C盘当中。若我们的C盘容量并不是很大,我们可以配置以下Maven的本地仓库。配......
  • Maven项目开发____maven开发环境的搭建
    //修改配置conf //配置环境变量//4.配置整合myeclipse......
  • Maven项目开发____Maven多模块开发亲测
    //4//5//6//7//8//9////b//c//d//e//f//g//h//i//j//k//l......
  • Maven Scope理解
    1.compile:默认值他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit3.runtime:表示被依赖项目无需参与项目的编译,不过后期......
  • Maven配置阿里镜像
    1.解决maven配置的境外网站下载jar包慢的问题<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexusaliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</u......
  • BUG库(Maven)Failed to execute goal org.apache.maven.plugins:maven-surefire-plugi
    一.Maven打包失败1.场景-项目中打包执行测试类报错 Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:2.12.4:test二.解决方案1.idea工具跳过选择按钮2.在pom文件中添加插件<plugin><groupId>org.apache.maven.plugins</groupId><artifactI......
  • maven命令
    参考:https://blog.csdn.net/hawinlolo/article/details/115860387cleanclean是maven工程的清理命令,执行clean会删除target目录及内容。testtest是maven工程的测试命令mvntest,会执行src/test/java下的单元测试类。compilecompile是maven工程的编译命令,作用是......
  • Maven 编译后War包运行失败
    问题发生原因项目构建使用Maven,因为代码较老有一些jar包是本地项目打包生成,一部分jar是古老第三方包,不准备上传私有仓库。在war包构建时使用maven插件maven-war-plugin。<plugin><groupId>org.apache.maven.plugins</groupId><a......
  • hutool依赖,复制list<a>的相同属性给list<b>,判断传入值是否为空等
      依赖传入<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency>   以下是将list<User>与list<UserVO>相同属性名的属性值,从list<User>......
  • .Net Framework使用Autofac实现依赖注入
    .NetFramework使用Autofac实现依赖注入前言最近也是找了快2周的工作了,收到的面试邀请也就几个,然后有个面试题目是用asp.netmvc+Entityframework做一个学生信息增删改查系统。因为题目要求了用Entityframework也就是EF那也就不上core了,web项目也是用Framework4.8去做的。......