понедельник, 17 августа 2009 г.

Управление версиями в Maven

После очередного релиза проекта приходится менять его версию, проходясь при этом по всем pom-файлам. Процедура эта довольно утомительная и избавить от нее поможет versions-maven-plugin.

Достаточно выставить в головном pom-файле новую версию проекта и затем выполнить команду:

mvn versions:update-child-modules

Как вы наверное догадались, команда выполнит обновление всех версий проекта в pom-файлах дочерних модулей. Если же, по какой-то причине, вы остались недовольны проделанной работой плагина, то содержимое pom-файлов можно легко вернуть в исходное состояние командой:

mvn versions:revert

Чтобы удалить backup-ы pom-файлов выполните:

mvn versions:commit

Помимо выполнения обновления версии проекта, есть еще несколько полезных возможностей. Вывод списка новых версий зависимостей проекта, доступных из репозитария:

mvn versions:display-dependency-updates

Список новых версий плагинов используемых в проекте:

mvn versions:display-plugin-updates

5 комментариев:

Unknown комментирует...

Так а чего вы по человечески не релизите через maven-release-plugin?
Он всё и так меняет

Никита Кокшаров комментирует...

А как быть в случае, когда мне просто хочется сменить версию?

Igor Bljahhin комментирует...

Все подпроекты мультимодульного проекта перечисляются в dependencyManagement родительского проекта. В качестве номера версии ставится переменная ${pom.version}. В pom.xml подпроектов тег с номером версии вообще убирается и таким образом версия мультимодульного проекта оказывается указанной в одном единственном месте - в родительском проекте.

При релизе стандартным способом номер версии автоматически увеличивается. Изменить номер версии при такой конфигурации тоже несложно.

Никита Кокшаров комментирует...

Про dependencyManagement понятно, а у подпроектов, версию для parent-а вы как указываете?

Igor Bljahhin комментирует...

Версию для parent'а мы указываем явно:

<parent>
<groupId>com.tallink.torpedo</groupId>
<artifactId>torpedo-project</artifactId>
<version>0.0.21-SNAPSHOT</version>
</parent>

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