【问题标题】:How do I exclude a Maven transitive dependency that comes from a Maven plugin?如何排除来自 Maven 插件的 Maven 传递依赖项?
【发布时间】:2016-11-21 08:12:38
【问题描述】:

我正在使用 Maven 3.0.3 和某个插件,该插件在其 pom.xml 中包含我想要排除的冗余依赖项。这个冗余 jar 中的类现在包含在确实位于项目构建的类路径中的其他一些工件中,因此不会出现任何构建运行时问题。

有没有办法在构建时排除插件的依赖项被添加到插件的类路径中?

【问题讨论】:

  • 插件依赖项通常不会添加到构建类路径中。你确定这正在发生吗?能给我举个例子吗? mvn dependency:tree 说什么?
  • 我所做的确实有效(只是为了尝试理解问题)是从插件的 pom.xml(在我的 .m2 中)中删除依赖项。所以我不确定jar不在插件执行的类路径中。
  • 对“maven 插件依赖排除”的简单搜索会产生这个 SO 问题作为第一个结果:stackoverflow.com/questions/6028534/…
  • @shlomi33 我猜你是need to wait for a release :),或者自己构建。
  • 这个用例在 JIRA 上存在几个问题,请参阅 MNG-2163 及其重复项(MNG-2969MNG-2448)——但由于没有活动,它们已关闭。

标签: java maven


【解决方案1】:

您可以在依赖项中使用<exclusions> 标签,例如:

<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk</artifactId>
  <version>1.10.0</version>
  <exclusions>
    <exclusion>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </exclusion>
  </exclusions>
</dependency>

将从aws-java-sdk 传递依赖项中排除joda-time

【讨论】:

  • 这是一个常规的依赖排除。我需要排除插件的特定依赖项
  • 我不太清楚,但是如果你想排除所有的依赖,你可以使用 * 作为groupIdartifactId 在`exclusion 中如果你想排除所有的依赖。如果这是您最初的需要,我会相应地更新答案。
  • 我需要从插件依赖树中删除一个依赖。排除事物是针对“正常”依赖关系的。不适用于来自插件的依赖项
猜你喜欢
  • 2018-07-06
  • 2021-10-24
  • 1970-01-01
  • 2019-10-29
  • 2022-11-30
  • 2015-10-26
  • 1970-01-01
  • 2012-02-25
相关资源
最近更新 更多