Это возможно путем определения пользовательского жизненного цикла.
Шаг 1: Определите MOJO для добавления путей. Вы сделали это уже с AddGroovySourceFolders
.
Шаг 2. Создайте файл META-INF/plexus/components.xml
в src/main/resources
:
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>jar</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<!-- I added this one, use appropriate plugin groupId/artifactId instead-->
<initialize>groovyadd:maven-groovyadd-plugin:add-build-paths</initialize>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:2.4.3:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:2.4.3:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:2.7.2:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:2.3.1:jar</package>
<install>org.apache.maven.plugins:maven-install-plugin:2.3.1:install</install>
<deploy>org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy</deploy>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
</components>
</component-set>
Элемент указывает упаковку, для которой предназначен жизненный цикл. Очевидно, вы можете переопределить жизненный цикл jar
(у меня это работает с Maven 3.0.3). Я скопировал все, кроме фазы инициализации, из соответствующего компонента в maven-core-3.0.3.jar \ META-INF \ plexus \ components.xml.
Побочным эффектом переопределения жизненного цикла JAR Maven является то, что вы теперь жестко запрограммировали версии компиляции и других плагинов, которые есть в вашем плагине, а не в Maven. Я не уверен, плохо это или хорошо.
Шаг 3: При использовании вашего плагина из другого проекта все, что вам нужно:
<plugins>
...
<plugin>
<groupId>groovyadd</groupId>
<artifactId>maven-groovyadd-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
</plugin>
...
</plugins>
Важной частью является элемент extensions . Без этого пользовательский жизненный цикл вашего плагина не будет выбран.
Вы также можете добавлять другие плагины к другим фазам жизненного цикла (например, компилировать Groovy-код на этапе компиляции в отдельный плагин вместо добавления компилятора для плагина maven-compiler-plugin).
Ссылки: Переопределение жизненного цикла по умолчанию из книги Maven