0

我正在尝试从源代码构建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”规则。这些东西都可以在它的 POM 中看到

的版本在父 POM 中固定为cxf-rt-features-clustering在与“3.1.6”相同的 POM中定义的值。${version.org.apache.cxf}

查看该工件的 POM,它甚至不依赖于xalan:xalan. 但是,它确实取决于大量其他事情。这些不会导致“禁止传递依赖”规则失败吗?为什么 Maven 执行器插件“认为”它确实依赖xalan:xalan

此外,为什么执行器输出甚至显示xalan:xalan依赖于另一个工件?当然,违反wildfly-feature-pack依赖cxf-rt-features-clusteringcxf-rt-features-clustering依赖的规则就足够了xalan?这不就意味着它wildfly-feature-pack具有传递依赖吗?

我想我可能误解了整个“禁止传递依赖”规则本身。官方文档并不是很有帮助,它只是说这个“规则禁止所有传递依赖”,这很明显。

4

1 回答 1

0

这意味着您使用不允许未明确定义依赖项的规则配置了强制插件。在这种情况下,您必须明确地将这些部分添加到 POM:

<!-- https://mvnrepository.com/artifact/xalan/xalan -->
<dependency>
    <groupId>xalan</groupId>
    <artifactId>xalan</artifactId>
    <version>2.7.1.jbossorg-2</version>
</dependency>

UPD:根据我的研究,Maven 版本是这里的原因。必须高于 3.3.1。

于 2018-02-21T23:01:32.047 回答