在Maven中,如何排除特定依赖项的所有传递依赖项?

21

我希望从一个依赖项中排除所有的传递依赖关系。在一些地方,我看到建议使用通配符来实现这一点。

<dependency>
  <groupId>myParentPackage</groupId>
  <artifactId>myParentProject</artifactId>
  <version>1.00.000</version>            
  <exclusions>
    <exclusion>
        <groupId>*</groupId>
        <artifactId>*</artifactId>
    </exclusion>
  </exclusions>
</dependency>

当我这样做时,我会收到一个警告:

'dependencies.dependency.exclusions.exclusion.groupId' for myParentPackage:myParentProject:jar with value '*' does not match a valid id pattern. @ line 146, column 30

声明本身是成功的:在我的构建中确实忽略了传递依赖项。

我还发现了一个旧的功能请求,确实请求这个功能

现在我不知道这是否是一个已弃用的功能,我是否不应该使用警告,或者该功能尚未完全实现(我正在使用Maven 3.0.4)...有没有人对此了解更多?


Maven支持依赖排除作为解决此问题的笨拙方法。 - Paul Sweatte
+1 for通配符排除。警告/无警告,我的Android测试仪器最终可以运行(有预验证问题吗?)。而明确排除每个单独的依赖项是疯狂的。 - dev
3个回答

12

此功能在Maven 3.2.1中得到支持 - 参见发布说明中的“传递依赖排除”部分(链接)


3

我自己也讨厌收到Maven的警告。虽然我见过通配符的写法但一直避免使用。运行mvn dependency:tree命令,查找与所涉及的构件关联的顶级依赖项并逐个排除它们(希望列表不是太大)。这绝对是解决该问题最安全的方法。


0
据我所知,这个功能目前还不存在。在你发送的功能请求中,你可以看到它的状态仍然是“未解决”。

是的,根据请求似乎是这样。但让我感到困惑的是,当你使用该功能时它实际上是有效的,只是会抛出一个警告;但它确实有效 :) - Markus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接