可以通过定义自定义生命周期来实现。
第 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 中的适当组件复制了除了初始化阶段之外的所有内容。
覆盖 Maven 的 JAR 生命周期的副作用是,您现在已经将编译和其他插件的版本硬编码在您的插件中,而不是在 Maven 中。我不确定这是好事还是坏事。
第 3 步:当使用来自另一个项目的插件时,您只需要:
<plugins>
...
<plugin>
<groupId>groovyadd</groupId>
<artifactId>maven-groovyadd-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
</plugin>
...
</plugins>
重要的部分是扩展元素。没有它,您的插件的自定义生命周期将不会被拾取。
您还可以将其他插件添加到生命周期中的其他阶段(例如,在单独的插件中的编译阶段编译 groovy 代码,而不是为 maven-compiler-plugin 添加编译器)。
参考:覆盖Maven 书中的默认生命周期