Как создать многомодульный проект Maven с 4-значной строкой версии, которая включает номера сборки CI? - PullRequest
0 голосов
/ 10 мая 2019

Меня попросили сделать это, поэтому, пожалуйста, не предлагайте мне этого не делать. : -Р

В настоящее время мы создаем многомодульный проект с Maven. У нас нет проблем с этим. Мы используем плагин релиза Maven, и мы получаем сборки SNAPSHOT для разработки и сборки релизов в Jenkins. Плагин релиза автоматически увеличивает 3-е место строки версии. Жизнь хороша.

Но меня попросили добавить 4-е место в нашей строке версий, которая заполняется сборкой Jenkins #.

Канонический способ, который, как я вижу, предлагал сделать это, прекрасно работает с одним модулем: вы определяете свойство, такое как build.number, для значения по умолчанию "0-SNAPSHOT", и вы определяете POM, чтобы иметь значение элемента как "1.9. $ {build.number}". И вы задали в своей задаче Jenkins определение build.number как build # Jenkins для его вызова Maven.

Было бы замечательно, если бы у нас был один модуль, но у нас его нет. У нас есть несколько модулей, и в Maven я тоже не могу 1. не указывать версию в POM дочернего модуля, ни 2. использовать свойство в версии POM дочернего модуля.

Я понимаю, что для Maven POM плохая идея пытаться создавать несколько артефактов в одном модуле (используя, скажем, профили), поэтому я не хочу пытаться свести этот проект к одному модулю.

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

Какие-нибудь решения?

1 Ответ

1 голос
/ 10 мая 2019

Плагин maven-release-plugin имеет два параметра с именами releaseVersion и developmentVersion. Там вы устанавливаете версию для сборки и следующую версию соответственно.

Используя Jenkins, вы можете заполнить эти переменные сгенерированным Jenkins контентом, например, с помощью номер сборки. Если вы хотите прочитать части номера версии из POM, вы можете использовать build-helper:parse-version и использовать такие термины, как ${parsedVersion.majorVersion}.

...