首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Maven依赖项排除不会导致编译错误?

为什么Maven依赖项排除不会导致编译错误?
EN

Stack Overflow用户
提问于 2017-04-03 01:49:04
回答 3查看 3K关注 0票数 3

新向Maven公开后,我可以理解<exclusion>标记的用例,但不确定它为什么不会导致编译错误:

代码语言:javascript
复制
<dependencies>
<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-embedder</artifactId>
  <version>2.0</version>
  <exclusions>
    <exclusion>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>
...

只有当您有另一个直接依赖于maven-core的时候,这才有可能吗?否则,应该发生编译错误。(假设maven-coremaven-embedder中的某个地方使用)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-03 11:21:08

有不同的可能性:

  1. 正如卡尔所说:如果依赖关系不是从其他地方提取的,请检查您的dependency:tree
  2. 可能根本不使用maven-core,即使maven-embedder确实使用它:假设maven-embedder有两个类A和B。您只使用A,但是maven-core只被B使用(如果A和B不相互使用),您的项目可能完全独立于maven-core。(顺便提一句:有些jars逻辑上应该是两个单独的jars,但是不管是什么原因合并在一起的地方--在我们的例子中,应该考虑将A和B放在不同的工件中)。
  3. 在编译时可能不需要传递依赖,而是在运行时使用。
票数 1
EN

Stack Overflow用户

发布于 2017-04-03 02:07:53

您正在将该工件排除在该特定依赖项之外,但它可能会从另一个依赖项中提取出来。使用一些东西,mvn dependency:tree -Dverbose -Dincludes=maven-core应该向您展示还有什么是引入依赖的。Maven执行插件还可以帮助排除传递依赖关系。

票数 2
EN

Stack Overflow用户

发布于 2017-04-03 02:04:12

该错误不会在编译时抛出,如果您使用依赖于maven-core的任何特性,则它将在运行时抛出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43175440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档