Maven2生命周期有帮助

时间:2008-11-27 03:00:54

标签: maven-2 maven-plugin

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

3 个答案:

答案 0 :(得分:2)

请参阅此讨论:Re: calling plugin in another plugin?根据Maven开发人员的说法,这不是插件应该工作的方式。

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

  

插件/ Mojos应该是库周围的薄包装器。你想直接使用这个库。

Cargo不仅是Maven插件,还有Java API和Ant task。所以你可能会:

  • 从你的Ant mojo调用Cargo Ant任务(我想你只需要插件的类路径中的Cargo JAR);

  • 用Java重写你的Ant mojo,并调用Cargo API(你想看一下Cargo插件的来源)。

答案 1 :(得分:0)

maven-ant-plugin执行的Ant脚本并不是真正意识到Maven就是这样;此插件旨在向后兼容自定义Ant任务。虽然可能存在某种允许你这样做的黑客行为,但我想不出干净的方式去做你想做的事情。

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

最简单的方法是简单地将Cargo目标绑定到构建阶段,并在Ant完成后运行。我认为这种方法没有任何不利之处 - 你还没有说明为什么要避免这种做法的具体原因。

答案 2 :(得分:0)

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

GMaven插件可让您使用groovy编写maven插件。这使您可以使用Ant Builder完全访问ant,这是在Groovy中编写ant脚本的一种非常简单的方法。 然后在这个Groovy mojo中你可以使用Mojo Executor调用任何maven mojo。

我已经在几个自定义maven插件中使用了这些,我还没有找到一种更简单的方法来编写和组合mojos。