编写Maven插件/ Mojo:如何使目标强制执行其他目标?

时间:2011-07-02 14:23:54

标签: maven-2 maven-plugin

注意:此线程是关于编写自定义Mojo,而不是使用插件。

我为Maven保留testing plugin。不幸的是,差不多一年了,我已经让这个特殊的未知世界徘徊,我真的想知道如何处理它,以便其用户可以更简单的配置。

假设我们的插件中有两个目标:

  • prepare(阶段:生成源)
  • do(阶段:编译)

我想配置do Mojo,要求prepare在构建的早期阶段执行。但是,descriptor documentation中没有任何内容表明我可以。

用户可能不关心或理解prepare目标的要点,所以我不想强迫他们在POM中指定它。当然,我可以直接从do执行Mojo,但是prepare目标将在比预期更晚的阶段运行。

(我查看了custom lifecycles,但这似乎表明,在POM中已经有prepare目标的每个人都会在运行do后执行两次。)

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容(取自CompilerMojo):

/**
 * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
 * @version $Id: CompilerMojo.java 941498 2010-05-05 21:24:11Z krosenvold $
 * @since 2.0
 * @goal compile
 * @phase compile
 * @threadSafe
 * @requiresDependencyResolution compile
 */

通过在类上设置它,它将在编译阶段(在此示例中)执行。编译阶段要求所有先前阶段先执行(validate, generate-sources, process-sources, generate-resources, process-resources ...)。

基本上,选择一个你需要的阶段(甚至是同一个阶段),它应该有用。