Java Maven enforcer从反应堆级运行时出现问题
使用的Maven版本:3.5.2、3.5.3Java Maven enforcer从反应堆级运行时出现问题,java,maven-3,microservices,maven-enforcer-plugin,maven-reactor,Java,Maven 3,Microservices,Maven Enforcer Plugin,Maven Reactor,使用的Maven版本:3.5.2、3.5.3 mvn clean package -pl <root-artifact-id>:<module-name> mvn清洁包-pl: 这是失败的说法 [WARNING] Rule 3: org.apache.maven.plugins.enforcer.ReactorModuleConvergence failed with message: Module parents have been found which
mvn clean package -pl <root-artifact-id>:<module-name>
mvn清洁包-pl:
这是失败的说法
[WARNING] Rule 3: org.apache.maven.plugins.enforcer.ReactorModuleConvergence failed with message:
Module parents have been found which could not be found in the reactor.
module: <artifact:id>:<module-name>:war:1.0-SNAPSHOT
[警告]规则3:org.apache.maven.plugins.enforcer.ReactorModuleConvergence失败,消息为:
已找到在反应堆中找不到的模块父级。
模块:war:1.0-SNAPSHOT
但是,从模块级运行mvn clean包时工作正常。这是跟踪中唯一导致enforcer无法生成包的警告消息。这是一个非常古老的报告错误,但似乎没有人对此采取任何措施: 根本原因是它将在-pl参数中传递的项目的artifactid(模块名)与其父级的artifactid(reactor)进行比较。这永远不会是相同的,因此总是会产生这个错误 对我们来说,修复方法是在使用此执行时禁用enforcer插件(其他没有-pl的执行,如“clean install”也可以) 编辑:
另一个选项是使用“.”在生成中指定reactor项目(注意:这也将打包reactor) 尝试包括
--也可以制作或-am
,例如:
mvn -am -pl <root-artifact-id>:<module-name> clean package
mvn-am-pl:干净的包
即使您正在构建的模块不依赖于构建中的另一个模块,这也会触发一个包含给定模块和父POM的反应器构建,然后Enforcer可以在不跳过的情况下验证它们的关系。(在我的例子中与Maven 3.6.2一起使用)。您能提供enforcer配置xml以及您定义的pom.xml吗?
mnv clean package -pl .,module-name
mvn -am -pl <root-artifact-id>:<module-name> clean package