2012-09-26 68 views
3

我的問題很難找到正確的搜索查詢,所以我希望它不是重複的。Maven插件開發:目標依賴

我正在開發少數目標的maven插件。我想在鏈中組合其中的兩個(生命週期?)。在執行clean-checkout目標之前,我想首先執行checkout目標。我使用註釋方法,並嘗試使用@Execute註釋來指出應執行哪個目標。該插件編譯但未按照我所設想的方式執行,因爲在執行clean-checkout時沒有前checkout目標。

@Mojo(name = "checkout", defaultPhase = LifecyclePhase.GENERATE_SOURCES) 
public class Checkout extends AbstractMojo { 

@Mojo(name = "clean-checkout", defaultPhase = LifecyclePhase.GENERATE_SOURCES) 
@Execute(goal = "checkout", phase = LifecyclePhase.GENERATE_SOURCES) 
public class CleanCheckout extends AbstractMojo { 

沒有defaultPhasephase性能,構建是失敗。

我在哪裏做錯了?

回答

1

定義自定義生命週期可能會對您有所幫助。 兩年前我更詳細地分析了maven-release-plugin,並注意到它們使用自己的生命週期。

在這裏你可以找到自己的生命週期定義: http://svn.apache.org/viewvc/maven/release/tags/maven-release-2.3.2/maven-release-manager/src/main/components-fragment.xml?view=markup

此外,我發現Sonatype的的Mavenbook內部細節: http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html

這個有趣的博客,也可以幫助你: http://www.sonatype.com/people/2009/08/create-a-customized-build-process-in-maven/