maven插件目标

时间:2010-06-04 11:05:18

标签: java maven-2 maven-plugin

我正在开发一个可提供5个目标的Maven插件。您可以单独执行目标1-4,也可以执行goal5,它将按顺序执行目标1-4。我一直在寻找一种方法来重用(即调用)另一个Maven目标,但还没有找到它。

当然,我可以让goalX委托给ClassX大部分功能,然后当调用goal5时,它委托给Class1 ... Class4,但这仍然涉及到指定的一定数量的代码重复,阅读并验证每个目标的配置。

有没有办法在另一个目标中重用一个目标?

谢谢, 唐

3 个答案:

答案 0 :(得分:1)

  

有没有办法在另一个目标中重用一个目标?

AFAIK,Maven API没有为此提供任何便利,因为Maven人不希望推广导致插件之间强耦合的做法,这被认为是坏的。您可以在Re: calling plugin in another plugin?找到相关背景。

话虽如此,这个blog post显示了如何实例化Mojo并在调用execute之前使用反射设置其字段。

您可能还想查看mojo-executor库。

但请务必阅读提及的帖子,我认为这很重要。

答案 1 :(得分:0)

  

当然,我可以让goalX委托给ClassX大部分功能,然后当调用goal5时,它委托给Class1 ... Class4,但这仍然涉及到指定的一定数量的代码重复,阅读并验证每个目标的配置。

那么为什么不为目标验证提供其他类的公共类?我认为这里最简单的方法是让一个目标在你的代码中调用另一个目标。

答案 2 :(得分:0)

“Maven思维模式”似乎是配置是pom.xml作者的责任,而不是Mojo实现者。如果将所有配置等移动到公共基类中,最终会绕过此机制。

这听起来像你想要的子项目:你的每个目标1-4都存在于他们自己的项目中,或者你可以运行目标5,它们都运行它们。也许这可能会有所帮助?:http://i-proving.com/space/Technologies/Maven/Maven+Recipes/Split+Your+Project+Into+Sub-Projects

如果您的源树没有很好地沿项目线分割,您可能可以对配置文件做一些事情(虽然我没有尝试过)。在这里查看接受的答案:How to bind a plugin goal to another plugin goal