新向Maven公开后,我可以理解<exclusion>标记的用例,但不确定它为什么不会导致编译错误:
<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-core在maven-embedder中的某个地方使用)
发布于 2017-04-03 11:21:08
有不同的可能性:
dependency:tree。maven-core,即使maven-embedder确实使用它:假设maven-embedder有两个类A和B。您只使用A,但是maven-core只被B使用(如果A和B不相互使用),您的项目可能完全独立于maven-core。(顺便提一句:有些jars逻辑上应该是两个单独的jars,但是不管是什么原因合并在一起的地方--在我们的例子中,应该考虑将A和B放在不同的工件中)。发布于 2017-04-03 02:07:53
您正在将该工件排除在该特定依赖项之外,但它可能会从另一个依赖项中提取出来。使用一些东西,mvn dependency:tree -Dverbose -Dincludes=maven-core应该向您展示还有什么是引入依赖的。Maven执行插件还可以帮助排除传递依赖关系。。
发布于 2017-04-03 02:04:12
该错误不会在编译时抛出,如果您使用依赖于maven-core的任何特性,则它将在运行时抛出。
https://stackoverflow.com/questions/43175440
复制相似问题