2010-03-04 24 views
5

我有一个由一些mojos组成的maven插件。 假设有 myproject.FirstMojo声明@goal第一 和 myproject.SecondMojo声明@goal第二maven使用@component来注入一个mojo

我想要做的是首先注入魔力作为第二魔力的财产。 我已经试过是其声明方式如下:

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

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

我该怎么办?

+0

@Sloin你为什么坚持这一点?您试图添加它作为答案,我标记了它。现在你想用这个没有建设性的观点来评论这个问题,我肯定会标记它。但我想明白你的意思。 – Riduidel 2011-11-08 09:19:29

回答

3

您可以使用:

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

注意,他们必须在同一个插件,你必须更换组,神器和版本与你的价值观。这可能会涉及到过滤源代码的正确版本,这使得它有点复杂。

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

+0

我会事实上遵循你的建议,而不是依赖nexus依赖关系解决方案,而是为了更好的组织而编码。无论如何感谢你的回复。 – Riduidel 2010-03-08 09:21:00