Maven2生命周期帮助

3

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

3个回答

2
请参考以下讨论:Re: calling plugin in another plugin? 根据Maven开发者的说法,插件不应该以这种方式工作。

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

插件/Mojos应该是对库的薄包装。你应该直接使用库。

Cargo不仅是Maven插件,还有Java API和Ant任务。所以你可能会做以下事情:

  • 从你的Ant mojo中调用Cargo Ant任务(我认为你只需要在插件的类路径中添加Cargo JAR文件);

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


0
maven-ant-plugin 执行的 Ant 脚本并不真正了解 Maven,该插件设计为向后兼容自定义 Ant 任务。我无法想到一种干净的方法来做你想要的事情,但可能会有某种类型的 hack 允许你这样做。
还可以在 Ant 中执行第二个 Maven 实例,只运行 Cargo 目标,但在这种情况下,您可能会遇到锁定文件等问题。做法是在 Ant 脚本中使用 exec 标签,并使用适当的目标作为参数调用 "mvn" 可执行文件。
最干净的方法是将 Cargo 目标绑定到构建的一个阶段,然后在 Ant 完成后运行。我没有看到任何缺点-您并没有明确说明想要避免的具体原因。

0

你可能会对以下两个Maven插件感兴趣:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接