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

StackOverflow https://stackoverflow.com/questions/8330093

  •  26-10-2019
  •  | 
  •  

Вопрос

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

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

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

Спасибо

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

mvn versions:set -DnewVersion=2.0.0

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

РЕДАКТИРОВАТЬ:

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top