题
我使用 Ant 构建了一个自定义 Maven2 插件。我想在自定义 Ant 插件成功完成后立即调用另一个 Maven 插件,特别是 Cargo Maven2 插件。但是,我不想将 Cargo 插件附加到另一个目标或阶段。有没有办法让它们连续运行而不必编写批处理脚本?是否可以让 Custom Ant 插件调用 Cargo 插件?
解决方案
请参阅此讨论: 关于:在另一个插件中调用插件? 根据 Maven 开发人员的说法,这不是插件应该工作的方式。
然而,有一个有趣的评论:
插件/Mojos 应该是库的薄包装。您想直接使用该库。
Cargo 不仅是一个 Maven 插件,它还有一个 Java API 和一个 蚂蚁任务. 。所以你可能可以:
从 Ant mojo 中调用 Cargo Ant 任务(我认为您只需要插件类路径中的 Cargo JAR);
用 Java 重写您的 Ant mojo,并调用 Cargo API(您需要查看 Cargo 插件的源代码)。
其他提示
在Ant脚本行家-ANT-插件执行是没有真正意识到Maven作为这样的;这个插件是专为定制Ant任务向后兼容性。我想不出做你想要的东西,虽然可能有某种黑客,让你做一个干净的方式。
这也应该是可以从里面蚂蚁,它运行纯属货运目标执行的Maven的第二个实例,但在这种情况下,你可能会遇到锁定的文件和类似的问题。做到这一点的方法是只使用一个标签在Ant脚本,并称之为“MVN”可执行文件,适当的目标作为参数。
在干净的方法是简单地将货运目标结合到构建的相位,和Ant完成后具有运行。我看不出任何缺点这种方法 - 你还没有真正说明为什么你想避免任何具体原因
您可能对以下两个 Maven 感兴趣
GMaven 插件允许您使用 groovy 编写 Maven 插件。这使您可以使用以下命令完全访问 ant 蚂蚁建造者, ,这是在 Groovy 中编写 ant 脚本的一种非常简单的方法。然后,在这个 Groovy mojo 中,您可以使用 Mojo Executor 调用任何 Maven mojo。
我已经在几个自定义 Maven 插件中使用了它们,但我还没有找到更简单的方法来编写和组合 mojos。