最近接触 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
答案 0 :(得分:1)
您要从该特定依赖项中排除该工件,但它可能会从另一个依赖项中获取。使用mvn dependency:tree -Dverbose -Dincludes=maven-core
之类的东西应该会向您展示引入依赖项的其他内容。 The Maven Enforcer plugin can also help exclude transitive dependencies
答案 1 :(得分:1)
有不同的可能性:
dependency:tree
是否没有从其他地方拉入依赖。maven-core
确实使用了maven-embedder
,也可能根本不使用maven-embedder
:假设,例如maven-core
有两个A和B类。您只使用A,但maven-core
仅由B使用。然后(如果A和B不互相使用),您的项目可能完全独立于getBaseLoginResponse().getAccessToken())
。 (旁边的评论:有些罐子在逻辑上应该是两个独立的罐子,但是无论出于何种原因合并在一起 - 在我们的例子中,人们应该考虑将A和B放在单独的工件中。)答案 2 :(得分:0)
错误不会在编译时抛出,如果使用任何功能,它将在运行时抛出依赖于maven-core