【发布时间】:2023-04-06 08:06:01
【问题描述】:
我正在尝试从源代码构建WildFly 10.1.0.Final。
构建导致违反“禁止传递依赖”规则:
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.BanTransitiveDependencies failed with message:
org.wildfly:wildfly-feature-pack:pom:10.1.0.Final
org.apache.cxf:cxf-rt-features-clustering:jar:3.1.6:compile has transitive dependencies:
xalan:xalan:jar:2.7.1.jbossorg-2:compile
xalan:serializer:jar:2.7.1.jbossorg-2:compile
这会导致构建失败:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18:46 min
[INFO] Finished at: 2018-02-21T22:22:47Z
[INFO] Final Memory: 213M/512M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (ban-transitive-deps) on project wildfly-feature-pack: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]
我确信它一定在某个时候奏效了 - WildFly 是一个非常活跃的开源项目,无法想象如果它甚至无法构建一个版本会达到最终版本。
我可能遗漏了一些东西(因为我以前从未使用过 Ban Transitive Dependencies),但我不明白从那时到现在发生了什么变化。
首先,正如预期的那样,wildfly-feature-pack 确实依赖于cxf-rt-features-clustering。此外,我们可以注意到它的父级是wildfly-parent。最后,在这个项目本身中指定了“ban-transitive-deps”规则。这些东西can all be seen in its POM。
cxf-rt-features-clustering 的版本是fixed in the parent POM,其值为${version.org.apache.cxf},即defined in the same POM 为“3.1.6”。
查看the POM for that artifact,它甚至不依赖于xalan:xalan。但是,它确实取决于大量其他事情。这些不会导致“禁止传递依赖”规则失败吗?为什么 Maven 执行器插件“认为”它确实依赖于 xalan:xalan?
此外,为什么执行器输出甚至显示xalan:xalan 依赖于另一个工件?当然,违反wildfly-feature-pack 依赖于cxf-rt-features-clustering 和cxf-rt-features-clustering 依赖于xalan 的规则就足够了吗?这不就意味着wildfly-feature-pack 有传递依赖吗?
我想我可能误解了整个“禁止传递依赖”规则本身。 official documentation 并不是很有帮助,它只是说这个“规则禁止所有传递依赖”,这很明显。
【问题讨论】:
-
你对 pom 做了什么改动吗?上游每天构建几次,我还没有看到这个问题。
-
嗨@JamesR.Perkins,不,我没有对 POM 进行任何更改。我注意到至少对于 JBoss EAP(基于 WildFly)已经观察到了这个问题 - 参见 issues.jboss.org/browse/JBEAP-5775 - 解决方法是完全禁用强制插件。这种“感觉”是错误的,因为不应该仅仅因为 QA 给你一个你不喜欢的结果就禁用质量保证。
-
您使用的是什么 JDK 和该 JDK 的版本?
-
@JamesR.Perkins
jdk1.8.0_162在 RHEL 7.4 上,作为 YUM 包安装 -
您是从源 zip 还是从 GitHub 的标签构建的?我看看能不能在本地重现。
标签: maven dependencies wildfly maven-enforcer-plugin