2012-07-12 115 views
2

我正在使用apache commons.cli庫來解析命令行參數。默認的解析行爲是它基於空間解析參數。我使用ant將參數傳遞給我的Java程序,並且ant使用的語法略有不同,並且使用的是=而不是空格。我如何改變我解析的行爲,它基於= 而不是空格? 我分析目前看起來是這樣的:根據'='解析命令行參數

Options options = new Options(); 
    options.addOption("Dkey", true, "some parameter"); 
    CommandLineParser parser = new PosixParser(); 
    CommandLine cmd = parser.parse(options, args); 

回答

4

看一看的usage examples page,尤其是螞蟻的例子。

您可以使用OptionBuilder併爲具有2個參數的D創建一個選項。

對於你的情況從該頁面的適應例子看起來是這樣的:

Option property = OptionBuilder.withArgName("key=value") 
          .hasArgs(2) 
          .withValueSeparator() 
          .withDescription("use value for given property") 
          .create("D"); 

下面是相關的JavaDoc另一個例子:http://commons.apache.org/cli/api-1.2/org/apache/commons/cli/OptionBuilder.html#withValueSeparator%28%29

Option opt = OptionBuilder.withValueSeparator().create('D'); 

CommandLine line = parser.parse(args); 
String propertyName = opt.getValue(0); 
String propertyValue = opt.getValue(1); 
+0

它,當我使用的CommandLine線=解析器抱怨。解析(參數);只允許CommandLine line = parser.parse(options,args); ? – comatose 2012-07-12 14:24:24

+0

@comatose這可能是一個版本問題:要麼使用舊版本,他們沒有更新他們的文檔,或者我偶然鏈接了舊文檔。 - 或者他們只是在他們的文檔中有一個錯誤,他們畢竟是人類:) - 如果'parser.parse(options,args)'有效,那就使用它。 – Thomas 2012-07-12 14:59:15