Определите плагины Maven в родительском pom, но вызывайте плагины только в дочерних проектах
У меня есть ряд проектов, которые должны запускать одну и ту же серию плагинов Maven во время их сборки. Я хотел бы избежать повторного объявления всей этой конфигурации в каждом проекте, поэтому я сделал их все из проекта «шаблона» родительского pom, который содержит только те исполнения плагинов (8 разных моджо). Но я хочу, чтобы эти плагины выполнялись только на дочерних проектах, а не на родительском проекте во время сборок Maven.
Я пытался выполнить это четырьмя различными способами, каждый с побочным эффектом, который мне не нравится.
Объявите выполнение плагина в родительской помпеbuild/plugins
элемент и использовать свойства-Maven-плагин длявключитьskip
свойства других плагинов в родительском проекте. Это не сработало, потому что одна из целей плагина (maven-dependency-plugin: build-classpath) не имеетskip
свойство.
Объявите выполнение плагина в родительской помпеbuild/pluginManagement
элемент. К сожалению, это требует от меня переопределить каждый из восьми плагинов вbuild/plugins
Элемент pom каждого дочернего проекта, как:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
...
Это слишком многократно и проблематично, если мне когда-нибудь понадобится изменить плагины в шаблоне pom.
Объявите выполнение плагина в профиле в родительском pom, который активируетсяотсутствие изnobuild.txt
file (который существует в родительском pom, поэтому плагины там не выполняются):
<profiles>
<profile>
<activation>
<file>
<missing>nobuild.txt</missing>
</file>
</activation>
<build>
....
</build>
</profile>
</profiles>
Это работает по большей части, за исключением того, что путь к файлу вmissing
Элемент, кажется, основан натекущий рабочий каталог вместо проекта basedir. Это ломает некоторые многомодульные сборки, которые я хотел бы иметь.Редактировать: чтобы уточнить, родительский «шаблонный» проект сам по себе является модулем в многомодульном проекте, и сборка прерывается, когда я, например, пытаюсь сделатьmvn install
на корню. Структура проекта выглядит так:
+ job
|- job-core
|- job-template
|- job1 inherits from job-template
|- job2 inherits from job-template
Настройте пользовательский жизненный цикл и упаковку. Кажется, это позволяет мне связывать плагины с фазами жизненного цикла,но не указывать какую-либо конфигурацию.
Итак, есть ли другой способ указать несколько исполнений плагинов Maven, которые можно повторно использовать в нескольких проектах (с минимальным повторением в каждом из этих проектов)?