Создать версии: update-child-modules выполнить при выпуске: подготовить - PullRequest
0 голосов
/ 24 августа 2018

Есть ли способ вызвать versions:update-child-modules на release:prepare в Maven?

Документация утверждает "Выполняется только прямым вызовом".но я хочу использовать это, чтобы заставить модули в сборке реактора иметь правильные версии.Некоторые модули включены только для определенных профилей, и это исправляет это вручную, но было бы намного приятнее иметь его как часть процесса выпуска.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Использование профилей для адаптации к контексту времени сборки, а не к контексту времени выполнения и не (за редким исключением) для создания альтернативных версий вашего артефакта

- https://dzone.com/articles/maven-profile-best-practices

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

По сути это означало удаление <modules> из профилей, разрешение реактору собирать все и использоватьпрофиль для управления включенными зависимостями для API целевой платформы.

Это так, как @khmarbaise предложил в комментариях выше: «Модули, которые находятся в профиле, с моей точки зрения, являются проблемой».Мудрые слова.

Что касается того, почему я не мог вызвать versions:update-child-modules на release:prepare - невозможно изменить POM, который уже обрабатывается.Либо изменение игнорируется, либо оно приводит к сбоям в работе Maven.Я попытался добавить его как выполнение плагина и как задачу exec для запуска Maven как отдельного процесса, и он отказался работать.Я пробовал несколько этапов, включая clean и pre-clean, но без радости.

Кажется, единственный способ изменить это - разрешить https://issues.apache.org/jira/browse/MRELEASE-843 и включить плагин релиза для обновления всех модулей во всех профилях.

0 голосов
/ 30 августа 2018

В качестве обходного пути я закончил тем, что удалил родителя из дочернего модуля и заставил его установить версию следующим образом:

PROJECT_VERSION=`mvn help:evaluate -Dexpression=project.version |grep -e -SNAPSHOT$`
mvn -B -DnewVersion=$PROJECT_VERSION -f foo_module/ versions:set
mvn -B -DnewVersion=$PROJECT_VERSION -f bar_module/ versions:set 

... затем фиксируем это обновление в SCM, как часть сборки Jenkins. Я не очень доволен этим, потому что теперь релиз гарантированно будет работать только на одном задании Дженкинса и не будет легко переносимым.

Это также изменило иерархию проекта, еще один побочный эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...