Версия родительского модуля в дочерних модулях, указанная в профилях, не обновляется с помощью Maven-release-plugin - PullRequest
0 голосов
/ 06 мая 2019

У меня есть многомодульный проект с одним модулем, который медленно собирается и используется только при выпуске (только для выпуска).В совокупном поме у меня есть все модули, кроме модуля только для выпуска.Модуль только для выпуска указан в отдельном профиле, который я активирую с помощью maven-release-plugin, и он его строит и нормально его выпускает.

Проблема заключается в версии родительского модуля в версии только для выпуска.модуль не обновляется при запуске release: prepare, то есть при сборке всех остальных модулей (как при подготовке, так и при выполнении) с верной версией родительского артефакта в версии, доступной только для модуля, в версии по-прежнему есть -SNAPSHOT.

Я обнаружил, что это похоже на проблему.Но нет решения.https://issues.apache.org/jira/browse/MRELEASE-843

Некоторый просто код из агрегата pom, объясняющий структуру.

<profile>
<id>build-rpm</id>
 <modules>
   <module>release-only</module>
 </modules>
</profile>

<plugin>
<artifactId>maven-release-plugin</artifactId>
 <configuration>
   <releaseProfiles>build-rpm</releaseProfiles>
 </configuration>
</plugin>

<modules>
  <module>module1</module>
  <module>module2</module>
</modules>

При запуске mvn release: подготовьтесь, я хочу, чтобы версии во всех моих модулях были обновлены.(Как и в обычных версиях mvn: set -DnewVersion = xxx, которые работают как положено)

ни выпуск mvn: update-version и выпуск mvn: подготовить обновление версий, как ожидается.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Простой трюк не состоит в том, чтобы исключать модуль с помощью профиля, вместо этого вы должны создать профиль внутри модуля.Это предотвратит вас от подобных проблем.

1 голос
/ 06 мая 2019

Я бы предложил удалить «медленный модуль» из многомодульной сборки.Вместо этого создайте конвейер на вашем сервере сборки (Jenkins, Bamboo и т. Д.), Который сначала создает ваш многомодульный проект, а затем (в случае выпуска) создает «медленный модуль».

Таким образом, вы избегаете всех хлопот с модулями в профилях и выключаете и включаете модули.

...