Проблема с Maven Inforcer при работе с уровня реактора

Используемая версия 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 с уровня модуля. Это единственное предупреждающее сообщение в трассировке, приводящее к тому, что принудительному устройству не удается собрать пакет

0 ответов

Это очень старая ошибка, о которой сообщалось, но, похоже, никто ничего не делает с ней: https://issues.apache.org/jira/browse/MENFORCER-189

Основная причина может заключаться в том, что он сравнивает артефактид (имя-модуля) проекта, переданный в параметре -pl, с артефактидом (реактором) его родителя. Что никогда не будет прежним и, следовательно, всегда будет давать эту ошибку.

Для нас исправление заключалось в том, чтобы отключить плагин enforcer при использовании этого выполнения (другие исполнения без -pl, такие как "чистая установка", подходят)

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

Изменить:
Другой вариант - указать проект реактора в сборке с помощью '.' (примечание: это также упакует реактор)

mnv clean package -pl .,module-name

Попробуйте включить --also-make или -am, например:

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

Даже если модуль, который вы создаете, не зависит от другого модуля в сборке, запускается сборка Reactor, которая включает данный модуль и родительский POM вместе, и их связь затем может быть проверена Enforcer без пропуска. (В моем случае работает с Maven 3.6.2).

Другие вопросы по тегам