3

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

4

3 回答 3

2

请参阅此讨论:Re:在另一个插件中调用插件?根据 Maven 开发人员的说法,这不是插件应该工作的方式。

但是,有一个有趣的评论:

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

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

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

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

于 2009-01-20T15:35:41.057 回答
0

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

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

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

于 2009-01-20T14:14:57.943 回答
0

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

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

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

于 2009-01-22T22:19:23.610 回答