【问题标题】:In Maven, how can I exclude all transitive dependencies from a particular dependency?在 Maven 中,如何从特定依赖项中排除所有传递依赖项?
【发布时间】:2013-04-27 14:00:00
【问题描述】:

我想从一个依赖项中排除所有传递依赖项。在某些地方我看到它建议为此使用通配符

<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

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

我还发现了一个旧的功能请求,它确实请求 exactly this feature

所以现在我不知道这是否是我不应该使用的已弃用功能、警告是否错误,或者该功能尚未完全实现(我使用的是 Maven 3.0.4)。 ..有人知道更多吗?

【问题讨论】:

  • Maven 支持 dependency exclusions 作为一个笨重的解决方法。
  • +1 表示通配符排除。警告/无警告,我的 Android 仪器测试最终可以运行(预验证问题有人吗?)。并且明确排除每个单独的依赖项是疯狂的。

标签: maven dependencies


【解决方案1】:

据我所知,此功能尚不存在。在您发送的功能请求中,您可以看到它的状态仍然是“未解决”。

【讨论】:

  • 是的,按照要求好像是这样。但让我失望的是,当你使用该功能时,它确实有效,它只是发出警告;但它有效:)
【解决方案2】:

我讨厌自己收到 Maven 警告。我见过通配符方法,但避免了它。运行一个 mvn dependency:tree 目标,发现属于相关工件的顶级依赖项并单独排除每个(希望列表不是那么大)。这是目前解决这个问题最安全的方法。

【讨论】:

    【解决方案3】:

    这是 Maven 3.2.1 - see 'Transitive dependency excludes' section in the release notes 中支持的功能。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 2020-04-19
      • 2023-04-02
      • 2013-11-28
      • 2022-11-30
      • 2018-07-06
      • 2019-10-29
      • 2012-10-20
      相关资源
      最近更新 更多