我的问题很难找到合适的搜索查询,所以我希望它不会重复。
我正在开发一些目标很少的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 {
如果没有defaultPhase
和phase
属性,则构建失败。
我在哪里做错了?
答案 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/