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