maven使用@component注入一个mojo

时间:2010-03-04 10:49:34

标签: maven-2

我是一个由一些mojos组成的maven插件。 假设有 myproject.FirstMojo首先声明为@goal 和 myproject.SecondMojo声明为@goal second

我想做的是将第一个mojo作为第二个mojo的属性注入。 我尝试的是以下列方式声明:

/**
 * @component role="myproject.FirstMojo"
 */
private FirstMojo first;

不幸的是,当这样做时,我收到Component descriptor cannot be found in the component repository:错误。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

您可以使用:

/** @component role="org.apache.maven.plugin.Mojo" role-hint="groupId:artifactId:version:second" */
private FirstMojo first;

请注意,它们必须位于同一个插件中,您必须使用您的值替换组,工件和版本。这可能涉及过滤正确版本的源代码,这使它有点复杂。

我强烈建议将您需要的功能分解到一个单独的类中(如果您需要访问其中的某些组件,可能是Plexus组件)或抽象基类。