2008-11-27 161 views
3

我使用Ant构建了一个自定义的Maven2插件。我想在自定义Ant插件成功完成后立即调用另一个Maven插件,特别是货物Maven2插件。但是,我不想将货运插件附加到另一个目标或阶段。有没有办法让他们连续运行而不必编写批处理脚本?是否有将Custom Ant插件调用到Cargo插件?Maven2生命周期帮助

回答

2

看到这个讨论:Re: calling plugin in another plugin?根据Maven的开发者,这不是插件应该工作的方式。

然而,这个有趣的评论:

插件/ Mojos应该在图书馆瘦包装。你想直接使用库。

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

  • 从你的Ant mojo调用Cargo Ant任务

  • 在Java中重写您的Ant mojo并调用Cargo API(您想查看Cargo插件的来源)。

0

maven-ant-plugin执行的Ant脚本并不真正了解Maven,此插件旨在与自定义Ant任务向后兼容。我想不出一种干净的方式来做你想做的事情,尽管可能会有某种黑客让你去做。

也应该可以从Ant内部执行第二个Maven实例,该实例完全运行Cargo目标,但在这种情况下,您可能会遇到锁定文件等问题。要做到这一点,只需在Ant脚本中使用一个标签,并以适当的目标作为参数调用“mvn”可执行文件即可。

最简洁的方法是将货物目标简单地绑定到构建阶段,并在Ant完成后运行。我不认为这种方法有任何缺点 - 你没有真正说明你为什么要避免它的具体原因。

0

你也许以下Maven感兴趣的两个

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

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