2010-01-25 65 views
0

我正在使用一個maven插件,它爲我的項目定義了自定義打包類型和生命週期。讓我們稱這個包裝爲「foo」,由「foo-plugin」定義。我無法控制這個插件,但我想在我的插件中擴展它的生命週期定義。將mojo添加到另一個maven插件定義的自定義生命週期中

我正在寫另一個插件,讓我們稱之爲「酒吧插件」。我想要在「foo」打包的項目的流程源代碼階段調用我的插件的某個目標。不在其他情況下。我已經定義了一個mojo在流程源代碼階段執行,但是這使得它可以在任何項目的流程源代碼階段執行,而不僅僅是那些打包「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>元素設爲真正。甚至有可能使用另一個插件來擴展由一個插件定義的生命週期,如果是這樣,我做錯了什麼?

編輯: Maven項目結構如下:項目名稱(包裝)
myCompany的父(POM)
- someprojecttype父(POM)
- - 項目-1(富)
- - 項目2(foo)

我想將該插件添加到someprojecttype-parent,其中打包設置爲pom。這會導致在構建父項目時執行欄目標。我只想在構建項目1和項目2時執行酒吧目標。

+0

我試圖做類似的事情。我相信我已經採取了和你一樣的步驟,但是當我嘗試構建我的項目時,我的新插件未被觸發。有什麼建議會導致什麼? – groomsy 2013-02-21 17:41:01

回答

1

從它的聲音最後一點來看像你需要把插件裏面

<build> 
    <pluginManagement> 
     <plugins> 

,而不是僅僅

<build> 
    <plugins> 

應該限制執行的子項目

相關問題