如何捆绑maven mojo中的现有java可执行文件
我有一个现有的java命令行程序,需要大量参数并使用优秀的args4j来解析它们。如何捆绑maven mojo中的现有java可执行文件
我现在想制作一个maven插件mojo,它将运行此应用程序中包含的Java代码。到目前为止,我已经尝试了基本的方法:将每个和任何命令行参数复制到一个mojo参数中。 Bu我觉得这个例外情况很无聊,容易出错,因为maven mojo javadoc注释比args4j注解要少得多。
所以,使用maven 3,有没有更好的方法让我的可执行文件作为maven mojo运行? 哦,请不要谈论exec-maven-plugin,因为我发现它在这种情况下太有限了(我的可执行文件将不得不使用项目设置和用户配置文件混合运行,我想简单地调用maven-exec-插件不会做的伎俩)。
虽然@khmarbaise's answer在一般观点上是完全正确的,但我想稍微扩展一下。
我的独立命令行应用程序使用args4j,但我认为使用Commons CLI或(甚至更多)JCommander可以相当好地复制该进程,这依赖于主bean中相同的命令行注释。
所以,我所做的是一个maven mojo,它使用自省,获得主要的bean命令行参数列表。 对于这些参数中的每一个,我都希望一个属性出现在项目/设置信息中。如果此属性存在,则使用该选项和最终关联构建一个假命令行。我可以使用args4j来填充我的bean,然后使用它的主命令运行这个bean。一旦我浏览了所有选项(存储为maven属性),我就可以使用args4j来填充我的bean,然后使用它的主命令运行这个bean。
我认为这种方法可能相当普遍,只要你的应用程序有一组标志和一个无参数run()
方法。
唯一的方法是通过mojo参数,因为这是Maven插件的Maven方式。
我错过了定义一个属性文件,其中包含配置作为替代mojo参数。但我认为对于Maven插件来说,最佳实践是拥有Mojo参数。
我很抱歉不接受你的答案,但我找到了一个更好的解决方案,并在稍后的答案中解释它。请原谅我的行为。 – Riduidel 2011-04-06 08:39:06
关于我们谈论的论据有多少? – khmarbaise 2011-04-05 13:58:01
@khmarbaise在10和20之间 – Riduidel 2011-04-05 14:58:59
我认为很多这些参数都有默认值?我知道很多插件有更多的参数。 – khmarbaise 2011-04-05 15:55:04