我使用 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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top