【发布时间】:2013-01-25 11:45:22
【问题描述】:
我在父 pom 中有一个 dependencyManagement 部分,例如
<dependencyManagement>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
</dependencyManagement>
还有一个孩子,拥有它
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
我已经尝试使用enforcer plugin 防止在子 pom 中发生这种覆盖,只允许在父级中设置这些,但无法做到。我希望这个构建失败。用那个插件或其他方式有可能吗?
有DependencyCovergence,它强制所有版本都相同,但这太严格了,因为我不想控制所有传递依赖项——只控制明确定义的那些。
如果我能阻止在子 pom 中引入任何新的依赖项,我会很高兴 - 定义的所有内容都应该在父 pom 中定义,然后在需要时在子 pom 中提及。
【问题讨论】:
-
我想知道是否有人知道是否有某种方法可以做到这一点。就个人而言,我暂时想不出。
-
编写新的执行者规则是可能的。