2009-08-10 21 views
1

我有一個插件使用Plexus命令行來調用一些外部進程並捕獲輸出。其中一個論據是以空格和引號的有趣格式,例如 - 範圍:「2008年8月25日」 - 「2009年8月4日」。我無法改變參數所需的格式,但Plexus在參數中檢測到空格,並將整個內容封裝在引號中。如何阻止我的命令行參數在Maven插件中被轉義?

所以

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

成爲

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

和調用失敗。

我可以讓叢停止逃避論據嗎?

回答

1

命令行對象使用殼牌與當地環境進行交互,可以配置命令行管理程序覆蓋默認逃逸過程中無法逃避的任何報價:

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

要知道,這意味着沒有的論點將被引用,所以小心使用它!