maven-release-плагин в многомодульном проекте, имеющий отдельный репозиторий git для каждого модуля

#git #maven #maven-release-plugin

#git #maven #maven-release-плагин

Вопрос:

Интересно, возможно ли использовать maven-release-plugin в многомодульном проекте, где каждый модуль имеет свой собственный репозиторий git? Что-то вроде этого:

 parent/
  .git/
  pom.xml
module1/
  .git/
  pom.xml
  

Я настроил простой тест (под Linux), и он завершается ошибкой для команды «git add» (simplyfied):

 cd parent amp;amp; git add -- pom.xml /.../module1/pom.xml
  

Сообщение об ошибке

 fatal: /.../module1/pom.xml: '/.../module1/pom.xml' is outside repository
  

Я понимаю, что эта команда git не может работать. Может ли maven-release-plugin выполнять отдельную команду «git add» для каждого репозитория?

На всякий случай ответ ОТРИЦАТЕЛЬНЫЙ: предположим, у меня есть только один репозиторий git. Имеет ли значение, использую ли я плоскую иерархию или вложенную?

Существуют ли какие-либо другие варианты автоматического управления версиями / выпуска и хранения нескольких репозиториев git?

Ответ №1:

Начиная с maven-release-plugin 2.0-beta-5, они добавили новое свойство с именем commitByProject, которое в моем случае (это именно ваш случай) позволяет нам фиксировать для каждого проекта каждый подмодуль (ссылка из корневого pom с помощью стратегии добавления подмодуля git).). И это делает работу!!

выпуск mvn: подготовка -DcommitByProject=true

Ответ №2:

Вы можете использовать подмодули git, чтобы иметь другие репозитории git внутри вашего репозитория git. Но если у вас module1 есть зависимость от parent through maven (т. <parent> е. У родителя есть dependencyManagement), похоже, что module1 на самом деле не является автономным модулем и, на мой взгляд, не должен иметь собственного репозитория.

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

Комментарии:

1. подмодули, похоже, не подходят: я получаю «fatal: Pathspec ‘module1/pom.xml » находится в подмодуле «module1″»

2. Что именно вы пытались сделать?

3. Я создал пример: как и в моем первоначальном вопросе, но теперь module1 вложен в родительский модуль как подмодуль git. Затем «mvn release: prepare» в родительском файле приведет к указанному сообщению об ошибке. Если ваш вопрос больше касается того, почему я просто не использую один репозиторий: код в настоящее время находится под svn, у каждого модуля есть свой собственный ствол, ветви,… Наши разработчики привыкли видеть только историю проекта, над которым они работают, и я немного боюсь, что они запутаются, если коммиты разных модулей смешиваются / мешают.