Как исключить не модифицированные (SCM) модули из выпуска Maven

StackOverflow https://stackoverflow.com/questions/4554687

Вопрос

У меня есть огромный проект, который содержит около 200 банок, когда я готовите выпуск Maven Prepare для всех банок, но наверняка есть банки, которые не были изменены с момента последней сборки, так что есть ли способ проверить, был ли JAR изменен с момента последней сборки из SCM ? и исключить их?

Я не хочу решать банки (более 200) индивидуально.

Например: я хочу сделать рассмотрение родителей, но я не хочу пересекать jar4, который не был изменен

-Parent

---------Module1

----------------jar1*

----------------jar2*

---------Module2

----------------jar3*

----------------jar4   
Это было полезно?

Решение

Например: я хочу сделать рассмотрение родителей, но я не хочу пересекать jar4, который не был изменен

Синтаксис для этого

mvn -pl Module1,Module2/jar3 <your maven goals here>

(В этом случае вы хотите построить все модуль1 и JAR3 Module2)

Теперь сложная часть в том, как собрать параметр для -pl. Я почти уверен, что нет никакого способа сделать это, поэтому вам, вероятно, придется написать сценарий оболочки (или Ruby, Groovy, Perl Python и т. Д.)

По сути, что должен делать ваш сценарий:

  • Ищите все каталоги проектов Maven (каталоги, которые содержат pom.xml) в данном каталоге, сортируйте их в обратном порядке (сначала по глубоким пути)
  • Найдите все измененные файлы во всей иерархии (используя SVN, CVS или любые вызовы)
  • Карта каждый из них изменил файл в один из проектов (сравнивая пути), собирайте все соответствующие проекты в списке
  • Теперь оптимизируйте список, выполнив некоторую оптимизацию родителей/ребенка (если присутствуют все дети данного родителя, удалите детей и добавьте родителя). Сделайте это неоднократно, пока не достигнете корневой иерархии.
  • Из оставшегося списка извлеките относительные пути, присоединяйтесь к ним с запятой и запустите свой процесс Maven, используя это значение для -pl параметр.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top