解析基于'='的命令行参数

时间:2012-07-12 11:44:56

标签: java command-line-arguments apache-commons-cli

我使用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);

1 个答案:

答案 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);