2012-09-26 72 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/