maven导入jar包时冲突的解决(3)

本文详细介绍了Maven中jar包冲突的解决方法,包括使用maven-dependency-plugin分析冲突、设置exclusions排除依赖、利用Maven Helper插件、通过父子项目管理依赖以及编写pom文件定义公共依赖。
摘要由CSDN通过智能技术生成

目录

 

检测包冲突工具

一.maven导入jar包的一些概念:

二.jar包导入优先级

三.使用exclusions解决冲突问题

四.借助Maven Helper插件中的Dependency Analyzer分析冲突的jar包

五.使用MAVEN父子项目解决冲突问题


检测包冲突工具

  1. mvn dependency:help

  2. mvn dependency:analyze

  3. mvn dependency:tree

  4. mvn dependency:tree -Dverbose

详细参考:
http://maven.apache.org/plugins/maven-dependency-plugin/plugin-info.html

http://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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值