5

使用的 Maven 版本:3.5.2、3.5.3

mvn clean package -pl <root-artifact-id>:<module-name>

没有说

    [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

但是从模块级别运行 mvn clean 包时工作正常。那是跟踪中唯一的警告消息,导致执行器无法构建包。

4

2 回答 2

5

这是一个非常古老的错误报告,但似乎没有人对此做任何事情:https ://issues.apache.org/jira/browse/MENFORCER-189

根本原因是它将 -pl 参数中传递的项目的工件 ID(模块名称)与其父项目的工件 ID(反应器)进行比较。哪个永远不会相同,因此总是会出现此错误。

对我们来说,修复是在使用此执行时禁用强制插件(其他没有 -pl 的执行,如“干净安装”很好)

mvn clean install
mvn package -pl module-name -Denforcer.skip=true

编辑:
另一种选择是使用“。”在构建中指定反应器项目。(注意:这也会封装反应堆)

mnv clean package -pl .,module-name
于 2019-10-22T09:21:57.950 回答
1

尝试包括--also-makeor -am,例如:

mvn -am -pl <root-artifact-id>:<module-name> clean package

即使您正在构建的模块不依赖于构建中的另一个模块,这也会触发包含给定模块和父 POM 的 Reactor 构建,然后它们的关系可以由 Enforcer 验证而不会跳过. (在我的情况下适用于 Maven 3.6.2)。

于 2019-10-28T06:54:05.810 回答