我有一个插件,它使用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停止逃避争论吗?
答案 0 :(得分:1)
Commandline对象使用Shell与本地环境进行交互,您可以配置Shell以覆盖默认的转义进程以不转义任何引号:
Commandline cl = new Commandline("call");
commandline.getShell().setQuotedArgumentsEnabled(false);
请注意,这意味着参数的 none 将被引用,因此请谨慎使用!