如何在maven插件中阻止我的命令行参数被转义?

时间:2009-08-10 12:49:45

标签: java maven-2 plexus

我有一个插件,它使用Plexus命令行来调用一些外部进程并捕获输出。其中一个论点是带有空格和引号的有趣格式,例如: - 范围:“2008年8月25日” - “2009年8月4日”。我无法更改参数所需的格式,但Plexus会检测参数中的空格并将整个内容包装在引号中。

所以

call --range:"25 Aug 2008"-"04 Aug 2009"

变为

call "--range:"25 Aug 2008"-"04 Aug 2009""

并且调用失败。

我可以让plexus停止逃避争论吗?

1 个答案:

答案 0 :(得分:1)

Commandline对象使用Shell与本地环境进行交互,您可以配置Shell以覆盖默认的转义进程以不转义任何引号:

Commandline cl = new Commandline("call");
commandline.getShell().setQuotedArgumentsEnabled(false);

请注意,这意味着参数的 none 将被引用,因此请谨慎使用!