maven 排除pom依赖_有没有办法在全球范围内排除Maven依赖关系?

有没有办法在全球范围内排除Maven依赖关系?

我试图find一个“通用”的方式排除一个传递依赖从被包含而不必排除它依赖于它的所有依赖。 例如,如果我想排除slf4j,我做了以下操作:

org.hibernatehibernate-jmx3.3.2.GAorg.slf4jslf4j-apiorg.hibernatehibernate-entitymanager3.4.0.GAjarorg.slf4jslf4j-api

这部分是为了清理pom文件,部分是为了避免将来出现问题,人们添加依赖于排除依赖的依赖,而忘记排除依赖。

有没有办法?

“假设我想从我的WAR中排除avalon-framework,我会在提供的作用域中将以下内容添加到我的项目POM中,这适用于所有传递依赖关系,并允许您指定一次。

avalon-frameworkavalon-framework4.1.3provided

这甚至可以在父POM中指定它,这将防止项目必须在所有子POM中声明它。

我创build了一个空的jar并创build了这个依赖:

commons-loggingcommons-loggingsystem${basedir}/src/lib/empty.jar0

这是不完美的,因为从现在起,你的编译/testingpath中有一个空的jar。 但是,这只是美容。

提醒一下,这里是Maven官方文档的答案:

为什么排除在每个依赖的基础上,而不是在POM的水平

这主要是为了确保依赖关系图是可预测的,并保持inheritance效应不排除不应排除的依赖关系。 如果你采取最后的手段,必须排除,你应该绝对确定你的依赖关系是否带来了不必要的传递依赖。

如果想要使构build更健壮,可以使用版本范围 。 这将确保没有更新版本的依赖可以干扰项目。

org.slf4jslf4j-api[1.4.2,)provided

任何slf4j-api版本> = 1.4.2将被视为在运行时提供(提供),或者由JDK本身或容器。

参考

Maven版本范围

可选的依赖和依赖排除

展开dnault的评论 :

可以使用Maven Enforcer插件的禁止依赖规则来确保排除依赖关系。 仍然需要手动排除它们,但是如果有人在别处添加了依赖关系,构build将会失败。

org.hibernatehibernate-jmx3.3.2.GAorg.slf4jslf4j-apiorg.apache.maven.pluginsmaven-enforcer-plugin1.4.1enforceorg.slf4j:slf4j-api

还有一个公开的function请求: MNG-1977全球依赖排除

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值