2010-03-04 169 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