maven的包冲突

  maven的间接引用会引入其他未声明的包,maven自身的冲突解决方案,最终引用的包可能不是希望的版本。

  

  直接声明期望的版本号,就没有间接引用的问题。

  子模块很多时,可以使用dependencyManagement在父模块中统一管理。

  父模块中配置:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>1.2.3.RELEASE</version>
            </dependency>
        </dependencies>
</dependencyManagement>

  子模块则无需指定版本信息:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

  dependencyManagement中定义的只是依赖的声明,并不实现引入,因此子项目需要显式的声明需要用的依赖。

 

  发生ClassNotFoundException等包冲突的引起的问题时,可以如下解决:

  intellj中Reimport,会重新下载对应的包,解决IDE缓存的问题。

  

  还是存在冲突时,mvn dependency:tree命令,查看间接引入的来源。

  mvn dependency:tree >tree.txt,使用该命令将结果重定向到tree.txt中,方便查看。

  

  mvn dependency:tree找到是哪个模块的哪个包间接引入了版本有问题的包,使用exclusion切断引用关系。 

<dependency>  
    <groupId>org.unitils</groupId>  
    <artifactId>unitils-dbmaintainer</artifactId>  
    <version>${unitils.version}</version>  
    <exclusions>   
        <exclusion>  
            <artifactId>asm</artifactId>  
            <groupId>asm</groupId>  
        </exclusion>  
    </exclusions>  
</dependency>

 

转载于:https://www.cnblogs.com/lnlvinso/p/8982869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值