我正在使用maven插件为我的项目定义自定义打包类型和生命周期。让我们称这个包装为“foo”,由“foo-plugin”定义。我无法控制所述插件,但我想在我的插件中扩展它的生命周期定义。
我正在编写另一个插件,让我们称之为“bar-plugin”。我希望在包含“foo”包装的项目的流程源阶段调用我的插件的某个目标。不是在任何其他情况下。我已经定义了一个mojo来在process-sources阶段执行,但这使得它在任何项目的process-sources阶段执行,而不仅仅是那些打包为“foo”的那些。
/**
* @goal bar
* @phase process-sources
*/
public class BarMojo extends AbstractMojo
我还尝试使用自定义生命周期定义来扩展现有生命周期,如下所示:
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>foo</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<phases>
<process-sources>${groupId}:${artifactId}:${version}:bar</process-sources>
</phases>
</configuration>
</component>
</components>
</component-set>
即使将pom中的<extensions>
元素设置为true,这似乎也完全被忽略了。甚至可以使用另一个插件扩展一个插件定义的生命周期,如果是这样,我做错了什么?
编辑:
maven项目结构如下:项目名称(包装)
mycompany-parent(pom)
- someprojecttype-parent(pom)
- - project-1(foo)
- - project-2(foo)
我想将插件添加到someprojecttype-parent,其包装设置为pom。这会导致在构建父项目时执行条形目标。我只想在构建project-1和project-2时执行bar目标。
答案 0 :(得分:1)
从最后一位判断,听起来你需要将插件放在
中<build>
<pluginManagement>
<plugins>
而不仅仅是
<build>
<plugins>
应限制对子项目的执行