Подтвердить что ты не робот

Maven: мультимодальные проекты и управление версиями

Каковы наилучшие практики для версий программного обеспечения и проектов с несколькими модулями с Maven?

Я имею в виду, когда я создаю проект мультимодулей с Maven, каков наилучший подход для управления версиями? Использовать одну версию для всех модулей (определенных в верхнем проекте)? Использовать версию для каждого модуля (определенного в POM каждого модуля)? Есть ли другой подход, который мне не хватает? Каковы плюсы и минусы каждого подхода?

В общем, разные модули, выпущенные вместе (возможно, с одним и тем же номером версии)?

Спасибо

4b9b3361

Ответ 1

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

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

С многомодульными проектами вы можете регенерировать свой проект и развертывать только то, что изменилось... вашими услугами. Это снижает риск, и вы уверены, что изменился только ваш сервисный модуль.

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

Когда вы создаете свой проект, подумайте о его развертывании в репозитории, который будет содержать все совместимые баннеры для сборки (каждая сборка создает новую папку с номером версии pom-most pom). Таким образом, вам не нужно хранить документацию о том, какие банки совместимы... все они просто развернуты вместе с номером сборки.

Ответ 2

Я искал решение для этой точной проблемы, и versions-maven-plugin был именно тем, что мне нужно. Мне не нравится плагин релиза, сообщающийся с системой SCM. Плагин версий делает именно то, что нам нужно: он устанавливает номер новой версии во всех помесях проекта:

mvn versions:set -DnewVersion=2.0.0

Затем я могу продолжить коммиты, теги и официальную сборку сборки сборки...

ИЗМЕНИТЬ

Плагин версий зависит от того, как был организован многомодовый проект maven: в результате он часто не обновляет все файлы POM в сложном многомодульном проекте. Я обнаружил, что sed и find делают работу гораздо надежнее:

sed -i 's/1.0.0-SNAPSHOT/1.0.0-RC1/g' `find . -name 'pom.xml'`

Ответ 3

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

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

Что касается вашего вопроса

- это разные модули, выпущенные вместе (возможно, номер версии)

Я бы так подумал. Это одна из причин того, что он является мультимодульным проектом. В противном случае модули могут быть независимыми.

Конечно, это тот материал, который изобилует редкими случаями и исключениями; -)