У меня есть репозиторий Git, который содержит кучу проектов maven верхнего уровня (каждый из них находится в своем подкаталоге с pom.xml). Верхний уровень означает, что эти проекты находятся в подкаталоге непосредственно под корнем репозитория. Все эти проекты должны оставаться в том же хранилище Git.
repo
+--- projectA
+--- pom.xml
+--- projectB
+--- pom.xml
Они могут/должны быть созданы независимыми заданиями jenkins. Таким образом, у нас есть работа для projectA и одна для projectB.
Раньше с Subversion мне удалось настроить задание Jenkins (для каждого проекта), которое проверит только источник проекта и запустит сборку Maven из pom.xml.
При модели Git (вероятно, такой же со всеми DVCS) это изменяется, и я не уверен, что лучше всего подходит. Есть несколько вариантов, которые я вижу и от которых мне не нравится:
- Каждое задание Дженкинса настроено для клонирования/вытягивания полного репозитория Git и относится к /pom.xml для сборки Maven. Таким образом, работа имеет весь код, но строит только его кусочек.
- Git предлагает субмодули (http://book.git-scm.com/5_submodules.html), которые кажутся быть немного сложным для обработки (и может легко сломаться)
- Создайте проект maven parent (агрегатор, содержащий все проекты), который запускает каждый проект (имея одно задание jenkins). Этот pom.xml содержит элементы для projectA и projectB.
Вы видите более полезный подход для этого (очень типичная настройка). Каков ваш опыт? Любые лучшие практики?