Обновление номеров версий модулей в мультимодульном проекте 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
. Это займет версию из родительского файла.