Maven 2 Maven2生命周期帮助

Maven 2 Maven2生命周期帮助,maven-2,maven-plugin,Maven 2,Maven Plugin,我已经使用Ant构建了一个定制的Maven2插件。我想在定制Ant插件成功完成后立即调用另一个maven插件,特别是Cargo Maven2插件。但是,我不想将Cargo插件附加到另一个目标或阶段。有没有一种方法可以让它们连续运行而不必编写批处理脚本?有没有办法让定制的Ant插件调用Cargo插件?maven Ant插件执行的Ant脚本并不真正了解maven本身;此插件设计用于向后兼容自定义Ant任务。我想不出一个干净的方法来做你想做的事,尽管可能有某种黑客允许你这么做 还可以从Ant内部执行M

我已经使用Ant构建了一个定制的Maven2插件。我想在定制Ant插件成功完成后立即调用另一个maven插件,特别是Cargo Maven2插件。但是,我不想将Cargo插件附加到另一个目标或阶段。有没有一种方法可以让它们连续运行而不必编写批处理脚本?有没有办法让定制的Ant插件调用Cargo插件?

maven Ant插件执行的Ant脚本并不真正了解maven本身;此插件设计用于向后兼容自定义Ant任务。我想不出一个干净的方法来做你想做的事,尽管可能有某种黑客允许你这么做

还可以从Ant内部执行Maven的第二个实例,该实例纯粹运行Cargo目标,但在这种情况下,您可能会遇到锁定文件等问题。这样做的方法是在Ant脚本中使用一个标记,并使用适当的目标作为参数调用“mvn”可执行文件

最干净的方法是简单地将货物目标绑定到构建的一个阶段,并在Ant完成后运行该阶段。我看不出这种方法有任何缺点-您没有真正说明您想要避免它的任何具体原因。

请看下面的讨论:根据Maven开发人员的说法,这不是插件的工作方式

然而,有一个有趣的评论:

插件/mojo应该是库周围的薄包装。你应该直接使用图书馆

Cargo不仅是一个Maven插件,它还有一个JavaAPI和一个。所以你可能会:

  • 从Ant mojo调用Cargo Ant任务(我认为您只需要插件类路径中的Cargo jar)

  • 用Java重写Ant mojo,并调用Cargo API(您需要查看Cargo插件的源代码)


您可能对以下两个maven感兴趣

GMaven插件允许您使用groovy编写maven插件。这使您可以使用完全访问ant,这是在Groovy中编写ant脚本的一种非常简单的方法。 然后在这个Groovy mojo中,您可以使用mojo执行器调用任何maven mojo

我已经在一些定制的maven插件中使用了它们,但我还没有找到一种更简单的方法来编写和组合Mojo