Как правильно использовать Maven с контролем версий? - PullRequest
1 голос
/ 24 апреля 2020

В настоящее время я нахожусь в процессе перехода от проектов ANT к Maven и изо всех сил пытаюсь настроить правильную работу версий проекта. В настоящее время у меня есть около 30+ проектов / модулей, которые все полагаются друг на друга, поэтому все должно быть в последней версии, чтобы работать правильно. Это было легко сделать с помощью ANT, но когда дело доходит до Maven, мне нужно будет постоянно вносить изменения во все другие выпущенные POM проекта, чтобы позволить им воспринимать эти новые изменения.

Я обсуждал с несколькими другими разработчиками, и мы решили, что нам может даже не понадобиться репозиторий maven с номерами версий, у нас просто есть все с одинаковым номером версии и мы собираем его локально или через Jenkins для обновления наших папок .m2. Похоже ли это на правильный путь для нашей ситуации? Мы что-то упускаем, делая это?

Я предложил провести тестирование Jenkins для развертывания в репозитории с номерами версий, такими как 1.0.Beta-SNAPSHOT. У нас есть настройка Jenkins, которую мы собираем при обновлении наших веток тестирования. Это означает, что мне не нужно было бы локально компилировать каждый проект в этой ветке для обновления моего .m2, я мог бы просто изменить POM, чтобы вытащить все эти версии Beta-SNAPSHOT в одном месте. Был бы хороший способ для меня сделать это, которое не повлияло бы на выпуск, если это было выдвинуто и выпущено с этим установленным номером версии? Если бы я хотел использовать свои локальные версии, я бы просто переключил этот номер версии на 1.0.0, который находится не в репозитории, а в моем локальном .m2.

Любые предложения о том, как правильно управлять проектами maven / модули с номерами версий приветствуются! Что-то, что уменьшает необходимость менять каждую POM при выпуске 1 из проектов / модулей, было бы лучше всего!

1 Ответ

1 голос
/ 24 апреля 2020

Наш разработчик много борется с этой проблемой. Обновление всех POM для релиза требует много ручного труда.

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

Если Вы говорите, что все должны использовать последние версии все время, я бы положил все проекты в один большой многомодульный проект. Это означает, что у вас есть один (git) репозиторий с основным POM в каталоге root, а каталог для каждого модуля (подпроекта) со своим собственным POM ссылается на основной POM как на родителя.

Затем вы можете запустить mvn clean install на родительском узле и собрать все модули с постоянными номерами версий. Таким образом, выпуск - это всего лишь одна большая сборка.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...