несколько веток проекта с Maven - PullRequest
2 голосов
/ 03 июля 2011

Я работаю с довольно крупным проектом и хочу работать над несколькими его ветками.Один из них в настоящее время является более старой версией другого, и помпы были одинаковыми.Я хотел бы избежать изменения номеров версий в файлах pom, поскольку для этого может потребоваться перезапись всех из них, что впоследствии сделает слияние более сложным.Как проще всего это сделать, чтобы банки, созданные mvn clean install, не переписывали файлы в другой ветке, помещенной в .mvn/repository?

note : я работаю с git и обнаружил, что сценарий git-new-workdir (, доступный в репозитории git source ) очень полезен, поскольку он по крайней мерепозволяет банкам, созданным в исходной иерархии дерева, сосуществовать в разных подкаталогах.


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

  • .m2 / хранилище
  • .m2 / branch1 / хранилище

Тогда можно запустить mvn install -o -Dmaven.repo.local=~/.m2/branch1/repository

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

$ cd .m2
$ mkdir branch1
$ find repository -type d -exec mkdir branch1/{} \;
$ find repository -type f -exec ln {} \;  branch1/{} \;

Но, похоже, repository.xml полон абсолютных указателей URL каталога.(почему они не могут использовать относительные URL-адреса?) В любом случае, кажется, что не все они загружаются, или, по крайней мере, компиляция была намного быстрее, чем ожидалось.

1 Ответ

2 голосов
/ 03 июля 2011

Решение, которое вы обнаружили в своем комментарии, является единственным ненавязчивым.

Следующим лучшим вариантом является version-maven-plugin, который автоматизирует смену poms в разных ветках.К сожалению, я не знаю ни одного компонента, который позволял бы вам автоматизировать процесс предотвращения использования git для слияния этих изменений с другими.

...