如何在CLI commons Library中使用property = value

时间:2013-09-04 10:49:56

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

我正在尝试使用OptionBuilder.withArgName( "property=value" )

如果我的选项被称为状态,我的命令行是:

--status p=11 s=22

它只能成功识别第一个参数11,它无法识别第二个参数......

Option status = OptionBuilder.withLongOpt("status")
                .withArgName( "property=value" )
                .hasArgs(2)
                .withValueSeparator()
                .withDescription("Get the status")
                .create('s');
options.addOption(status);

提前感谢您的帮助

1 个答案:

答案 0 :(得分:8)

您可以使用传递的命令行选项的简单修改来访问传递的属性

--status p=11 --status s=22

或使用简短的语法

-s p=11 -s s=22

在这种情况下,您只需使用代码

即可访问您的媒体资源
if (cmd.hasOption("status")) {
  Properties props = cmd.getOptionProperties("status");
  System.out.println(props.getProperty("p"));
  System.out.println(props.getProperty("t"));
}

如果您需要严格使用语法,可以手动解析property = value对。 在这种情况下,您应该删除.withValueSeparator()调用,然后使用

String [] propvalues = cmd.getOptionValues("status");
for (String propvalue : propvalues) {
   String [] values = propvalue.split("=");
   System.out.println(values[0] + " : " + values[1]);
}