Maven dependency插件 排除依赖

依赖排除

最近在构建项目的时候,由于新引入了第三方包导致项目build失败,build log信息如下:

1347262-20180831130320175-1798358674.jpg

失败原因显而易见,新引入的第三方包的依赖中有我们禁止的依赖,因此导致build失败。但是build日志信息并没有告诉我们是哪个第三方包的引入导致构建失败的,但是build信息提示我们使用 dependency:tree来查看项目依赖情况,以便找到root cause。

maven中一个专门用于依赖处理相关的插件: maven-dependency-plugin

该插件功能十分丰富,包含如下goals以解决不同的依赖管理需求,下面列出常见的几个goals,详细的文档参见:https://maven.apache.org/plugins/maven-dependency-plugin/

  • tree:以树形的形式显示项目的依赖信息
  • sources:解析依赖对应的附件和源代码;
  • analyze:分析哪些依赖 申明且被使用 未申明被使用 未使用被声明等情况;
    .....

运行命令


mvn dependency:tree

1347262-20180831135536145-1522788319.jpg

经过一顿骚操作最终定位到引入禁止依赖的三方包,接下来就是如何排除该依赖了。
在pom文件中显式的排除该被禁止的依赖

如下所示(示意):

<dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java-util</artifactId>
        <version>3.5.1</version>
        <exclusions>
          <exclusion>
            <groupId>x.y.z</groupId>
            <artifactId>abc</artifactId>
          </exclusion>
        </exclusions>
    </dependency>

本次依赖排除的正是令人头疼的日志相关的jar包,slf4j-log4j12.jar,由于该项目使用的是指定的日志框架,因此显式的禁止了其他三方包中引入的日志依赖,我们都知道常见的日志
框架有log4j, logback, java util log等,还有统一的日志抽象层slf4j,且类路径下的不同的日志框架jar包会存在影响,因此在处理依赖的时候,大部分都在处理日志框架的冲突。关于slf4j, logback, log4j, java util log之间的联系后面有机会再总结一篇博客吧。

依赖分析


mvn dependency:analyze

1347262-20180831135612721-13837649.jpg

该插件goal列出了未使用的依赖等信息。

dependency 和 dependencyManagement

父pom中的dependencies,对全局的孩子pom生效,即使孩子pom不显式的引入依赖。

而 dependencyManagement 主要是用于统一管理一些公共依赖的版本,子pom需要使用其中的依赖,还是需要显式的声明依赖,只是不需要声明版本号。

POM中大量存在引用的概念,pom文件也可以作为一种特殊的依赖,并引入到pom中作为依赖。

1347262-20180831142932203-1241416964.jpg

转载于:https://www.cnblogs.com/Spground/p/9565652.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值