Не удалось выполнить многомодульный проект Maven с использованием exec-maven-plugin

У меня есть мультимодульный проект Maven здесь.

Родительский проект имеет 3 общих модуля, с-paranamer, без-paranamer.

Модули с-paranamer и без-paranamer не зависят друг от друга, и оба зависят от общего модуля.

В модуле без-paranamer я добавил зависимость к общему модулю, как это.

Ниже приведена структура проекта.

.
├── pom.xml
├── common
│   ├── pom.xml
│   ├─ src
│      ├── main
│         ├─ java
│            ├── ParanamerUtil.java
│            ├── PersonV03.java
│            └── TestCaseClasses.java
│
├── with-paranamer
│   ├── pom.xml
│   ├──src
│      ├── main
│         ├── java
│            └── ParanamerExample.java
|
└── without-paranamer
    ├── pom.xml
    ├─ src
       ├── main
          ├── java
              └── ParametersExample.java

Я хочу выполнить ParametersExample Класс в модуле без paranamer, используя exec-maven-plugin. Поэтому я добавил exec-maven-plugin под pluginManagement в родительском pom.xml здесь.
В модуль без-paranamer я добавил плагин, как это.

Я следовал приведенным выше инструкциям, как указано в сообщении stackru здесь.

Когда я бегу mvn verify команда успешна

Но когда я пытаюсь запустить команду mvn exec:java -Dexec.mainClass=ParametersExample -pl without-paranamer Я получаю ниже ошибки.

WARNING] The POM for paranamer-maven-demo:common:jar:1.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.189 s
[INFO] Finished at: 2018-09-07T17:23:07-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project without-paranamer: Could not resolve dependencies for project paranamer-maven-demo:without-paranamer:jar:1.0-SNAPSHOT: Could not find artifact paranamer-maven-demo:common:jar:1.0-SNAPSHOT -> [Help 1]

Как я могу сделать мою программу успешной, используя exec-maven-plugin.

1 ответ

Решение

without-paranamer модуль зависит от paranamer-maven-demo.common.1.0-SNAPSHOTа где он может его найти? Самый очевидный ответ: в локальном хранилище. Но его там нет, если только вы его не установите (также вы должны установить POM родительского проекта).

mvn -N clean install - устанавливает родительский пом.(-N обозначает non recursive, что означает, что цели будут выполняться только для родительского проекта, а не для дочерних модулей).

mvn -pl common clean install - устанавливает common модуль.

Теперь звоню exec:java будет успешным (но не выводил вывод, из-за <skip>true</skip> в настройках управления плагином)

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