将mojo添加到另一个maven插件定义的自定义生命周期中

时间:2010-01-25 13:16:38

标签: java maven-2 maven-plugin

我正在使用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目标。

1 个答案:

答案 0 :(得分:1)

从最后一位判断,听起来你需要将插件放在

<build>
    <pluginManagement>
        <plugins>

而不仅仅是

<build>
    <plugins>

应限制对子项目的执行

相关问题