3

我正在使用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

1 回答 1

4

查看使用示例页面,尤其是 Ant 示例。

您可以使用OptionBuilderand 创建一个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);   
于 2012-07-12T12:14:47.183 回答