Maven插件开发:目标依赖

时间:2012-09-26 11:12:25

标签: java maven-plugin

我的问题很难找到合适的搜索查询,所以我希望它不会重复。

我正在开发一些目标很少的maven插件。我想将它们中的两个组合在一起(生命周期?)。在执行clean-checkout目标之前,我想首先执行checkout目标。我正在使用注释方法并尝试使用@Execute注释来指出应该执行哪个目标。插件编译但不是以我假设的方式执行,因为执行checkout时没有前面的clean-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 个答案:

答案 0 :(得分: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/