目录
四.借助Maven Helper插件中的Dependency Analyzer分析冲突的jar包
检测包冲突工具
mvn dependency:help
mvn dependency:analyze
mvn dependency:tree
mvn dependency:tree -Dverbose
详细参考:
http://maven.apache.org/plugins/maven-dependency-plugin/plugin-info.htmlhttp://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html
一.maven导入jar包的一些概念:
- 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包
- 传递依赖:项目中没有导入的jar包,可以通过依赖项目导入的jar包传递到项目中去
- mvn分析包冲突命令:mvn:dependency:tree
二.jar包导入优先级
- Maven默认处理策略:最短路径优先,最先声明优先(我做测试最先声明优先于最短路径,比如下面两个情况)
- 情况一(顺序1):
- A依赖E1,E1依赖B1(路径为A->E1->B1 路径长3)
- E2依赖B2(路径为E2->B2 路径长2)
- 此时导入的jar版本为A、E2、B1
- 情况二(顺序2):
- E2依赖B2
- A依赖E1,E1依赖B1
- 此时导入的jar版本为A、E2、B2
三.使用exclusions解决冲突问题
- 使用exclusions将某个传递jar包忽略
<dependency> <groupId>net.sf.ezmorph</groupId> <artifactId>ezmorph</artifactId> <version>1.0.6</version> <exclusions> <exclusion> <!-- 不要写版本号--> <groupId>org.apache.commons</groupId> <artifactId>commons-lang</artifactId> </exclusion> </exclusions> </dependency>
四.借助Maven Helper插件中的Dependency Analyzer分析冲突的jar包
刷新
五.使用MAVEN父子项目解决冲突问题
参考链接:https://blog.csdn.net/qq_34107571/article/details/82179003
- 1、创建一个新的工程:file—–>new—->project
- 2、步骤如图:
- 3、填写公司名称以及项目名称
- 4、创建好的新的工程如图所示:
- 5、因为新建的项目为maven父模板,所以其中的src目录可以删除。
- 6、选中工程右键—>new—>module
- 7、为子项目添加模板,可根据实际情况添加,也可不添加
- 8、
- 10、此处一定要注意填写正确的文件目录,否则会报错pom.xml已经存在,子模板创建失败
- 11、点击FINISH,至此整个项目创建完成。如果要新增其他子模板,照此步骤操作即可
- 12、打开子模板文件目录,发现都是不具功能的包,需要定义类型
- 13、大家可能发现了没有Java包,新建即可。新建Java包,并定义类型如下图所示
- ②、定义类型
- 14、定义类型完成后的目录样式
六.编写pom文件
- 1.首先定义一个父pom.xml,将公共依赖放在该pom.xml中进行声明:
<properties>
<spring.version>spring4.2.4</spring.version>
<properties><dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.versio}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 2.这样如moduleA和moduleB在引用Spring-beans jar包的时候,直接使用父pom.xml中定义的公共依赖就可以:
moduleA在其pom.xml使用spring-bean的jar包(不用再定义版本):
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
</dependencies>
- 3.moduleB在其pom.xml使用spring-bean的jar包如上类似:
- <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
</dependencies>