2016-05-05 8 views
1

У меня типичный мультимодульный проект maven.Как скомпилировать все модули, но установить или развернуть только выбранные модули?

  • Существует работа Jenkins, которая строит и развертывает все снимки во внутренний репозиторий.
  • Существует еще одна сборка Jenkins, которая проверяет код, обновляет все версии pom и строит &, развертывает версии с артефактами.

Я хотел бы оптимизировать последний путем развертывания только необходимые артефакты: это или из 100+ модулей.

В сборке все еще необходимо скомпилировать и протестировать все модули, но установить или развернуть только выбранные артефакты модуля для внутреннего репо.

Вопрос: Есть ли способ сделать это?

+0

спасибо за редактирование вопроса @A. Ди Маттео. Сейчас гораздо яснее. – phani

ответ

3

В этом случае вы можете определить в своем агрегаторе/родительском проекте (начиная с которого должна начинаться основная сборка), чтобы пропустить установку и развернуть выполнение с помощью свойства, чтобы по умолчанию отключить их через все модули. Затем в нескольких модулях, где это действие должно выполняться, вы можете переопределить определенное свойство, чтобы снова включить их.

Поскольку все действие ориентирована на работу CI, я также хотел бы предложить, чтобы обернуть это поведение в maven profile следующим образом:

В агрегаторе родительского проекта/можно определить:

<profiles> 
    <profile> 
     <id>ci-job</id> 
     <properties> 
      <disable.install.deploy>true</disable.install.deploy> 
      <maven.install.skip>${disable.install.deploy}</maven.install.skip> 
      <maven.deploy.skip>${disable.install.deploy}</maven.deploy.skip> 
     </properties> 
    </profile> 
</profiles> 

фрагмент выше определяет внутри bci-job профиль новое свойство, disable.install.deploy, по умолчанию установлено true. Его значение затем передается в maven.install.skip СОБСТВЕННОСТИ на maven-install-plugin:

Установите это истина для установки обводной артефакта. Используйте это для артефактов, которые не нужно устанавливать в локальном репозитории.

И в maven.deploy.skip собственность maven-deploy-plugin:

Установить это 'истина', чтобы обойти артефакт развернуть

Как таковой, выполнив следующие действия: МВН чистый

install -Pci-job

Действительно ли пропуск высокий и развертывать цели во всей сборке (во всех модулях).

Это половина работы. В нескольких модулях, где вы все еще хотите это действие, вы можете определить следующее:

<profiles> 
    <profile> 
     <id>ci-job</id> 
     <properties> 
      <disable.install.deploy>false</disable.install.deploy> 
     </properties> 
    </profile> 
</profiles> 

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

+0

отлично, вы думаете, что 'disable.install.deploy' может быть верхним уровнем , и в этом случае мне просто нужно переопределить свойство, а не весь профиль. Я попробую это сам так или иначе, просто хотел спросить. – phani

+0

@phani вы можете определить их как верхний уровень, но действительно зависит от того, хотите ли вы сохранить эту конфигурацию как поведение defaul или только как поведение CI, поэтому я предложил обернуть (и изолировать) поведение в профиле. До вас, очевидно, как тогда обратиться к вашим конкретным потребностям. Надеюсь, это помогло –

+0

@phani Вы решили этот вопрос в конце концов? вы не приняли ответ и не получили дополнительных отзывов. просто проверяю :) –