Обновление версии проекта Maven из скрипта

Прежде всего, у меня есть какое-то понимание, что следующее не может быть общепринятым способом сделать что-то.

У нас есть проект Maven 2, у которого есть номер версии, который должен обновляться каждую неделю или около того, во время новой версии. В ходе этого процесса я попытался исключить все, что нужно помнить, и создал сценарий bash, который обрабатывает этот процесс в интерактивном режиме.

Тем не менее, моя проблема заключается в обновлении версии POM из командной строки. Я могу сделать это с помощью sed, но я не думаю, что это очень удобно. Мне было интересно, есть ли какой-нибудь плагин maven, который сможет изменить pom.xml непосредственно из командной строки. Версия указана в разделе свойств pom. Можно ли написать плагин, который бы изменил свойства?

Заранее спасибо.

Обновить

Кажется, что моя проблема была с версиями проекта, определенными как свойства (которые были применены при фильтрации), который теперь кажется немного глупым.

Единственное, что я до сих пор ищу ответ, - как надежно получить версию определенного проекта в командной строке. Ранее у меня было "довольно уникальное" свойство, которое я использовал grep, но теперь <version> Элемент не является уникальным, так как в дочернем проекте есть как минимум два из них. Мне понадобится какой-то синтаксический анализатор XML, если у Maven нет решений, но моя цель - сделать скрипт как можно более независимым.

Я не уверен, должен ли я создать новый вопрос из этого, но я не сделал. Получение версии очень тесно связано с настройкой версии.

2 ответа

Решение

Мне было интересно, есть ли какой-нибудь плагин maven, который сможет изменить pom.xml непосредственно из командной строки.

Плагин Версии Maven может сделать это. Проверьте следующую цель:

  • versions:set может использоваться для установки версии проекта из командной строки, обновляя детали любых дочерних модулей по мере необходимости.

Из справки Maven POM:

env.X: префикс переменной с "env." вернет переменную окружения оболочки. Например, ${env.PATH} содержит переменную среды PATH. Примечание. Хотя сами переменные среды не чувствительны к регистру в Windows, поиск свойств учитывает регистр. Другими словами, в то время как оболочка Windows возвращает одинаковое значение для%PATH% и%Path%, Maven различает $ {env.PATH} и ${env.Path}. Начиная с Maven 2.1.0, имена переменных среды нормализуются в верхнем регистре для надежности.

Это означает, что вы можете иметь переменную окружения, такую ​​как $MYMAVENPROJECTVERSION, и читать ее так:

<version>${env.MYMAVENPROJECTVERSION}</version>

Вы можете обновлять эту переменную среды каждую неделю перед запуском сборки.

Надеюсь, что это поможет вам.

Другие вопросы по тегам