Обновление номеров версий модулей в мультимодульном проекте Maven

У меня есть мультимодульный проект maven. Мы намерены объединить все эти модули. Но на данный момент я заканчиваю жестко-кодирующую версию в каждом из модулей pom.xml, как показано ниже

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>

а основной родительский модуль имеет следующую конфигурацию

<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-application</artifactId>
<version>2.50.0.g</version>
<packaging>pom</packaging>

Ответ 1

Используйте versions:set из версии-maven plugin:

mvn versions:set -DnewVersion=2.50.1-SNAPSHOT

Он будет настраивать все версии pom, родительские версии и версии зависимостей в проекте с несколькими модулями.

Если вы допустили ошибку, сделайте

mvn versions:revert

или

mvn versions:commit

если вы довольны результатами.

Ответ 2

Возможно, вы захотите посмотреть в плагине выпуска Maven релиз: обновить-версии. Он обновит родительскую версию, а также все модули под ней.


Обновление: обратите внимание, что вышеописанный модуль выпуска. Если вы не выпускаете, вы можете использовать versions:set

mvn versions:set -DnewVersion=1.2.3-SNAPSHOT

Ответ 3

Я рекомендую вам прочитать сборник Maven о многомодульных (реакторных) сборках.

Я имел в виду, в частности, следующее:

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>
<version>2.50.0.g</version>

следует изменить. Здесь обратите внимание на не определенную версию только в родительской части, которую она определена.

<modelVersion>4.0.0</modelVersion>

<parent>
    <artifactId>xyz-application</artifactId>
    <groupId>com.xyz</groupId>
    <version>2.50.0.g</version>
</parent>
<groupId>com.xyz</groupId>
<artifactId>xyz-Library</artifactId>

Этот является лучшей ссылкой.

Ответ 4

: модули update-child-modules звучат так, как будто вы ищете. Вы можете сделать версии: установить, как упоминалось, но это легкий способ обновить родительские номера версий. По моему мнению, для дочерних модулей следует удалить определения <version>, так как они наследуют номер версии родительского модуля.

Ответ 5

Лучше всего, так как вы намерены объединить свои модули вместе, вы можете указать тег <dependencyMangement> во внешнем большинстве pom.xml (родительский модуль). Он контролирует имя версии и группы. В вашем отдельном модуле вам просто нужно указать тег <artifactId> в pom.xml. Это займет версию из родительского файла.