#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, у каждого модуля есть свой собственный ствол, ветви,… Наши разработчики привыкли видеть только историю проекта, над которым они работают, и я немного боюсь, что они запутаются, если коммиты разных модулей смешиваются / мешают.