我使用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);
答案 0 :(得分:4)
查看usage examples page,尤其是Ant示例。
您可以使用OptionBuilder
并为D
创建一个包含2个参数的选项。
对于您的情况,该页面中的改编示例可能如下所示:
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);