Apache Commons CLI可选和位置参数

时间:2017-07-13 20:56:09

标签: apache-commons

这里的交易:我想要一面旗帜" -pre"如果未填充将创建时间戳前缀;如果已填写,请使用指定的前缀。

Option prefixOption = OptionBuilder.create(O_PREFIX);
prefixOption.setLongOpt(O_PREFIX_LONG);
prefixOption.setArgName("prefix");
prefixOption.setDescription("Put a prefix (default is timestamp) to output directory.");
prefixOption.setType(String.class);
prefixOption.setOptionalArg(true);

后来......

System.out.println(commandLine.hasOption(O_PREFIX));
System.out.println(commandLine.getOptionValue(O_PREFIX));

执行:

\> mon_execution -pre
true
null


\> mon_execution -pre Hahaha
true
null

如果我强制使用arg pre

prefixOption.setArgs(1); (in first snipet)

命令行将下一个参数作为-pre的参数并中断解析。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

选项声明中的更改

Option prefixOption = new Option("pre", "prefix", true, "Put a prefix (default is timestamp) to output directory.");
prefixOption.setOptionalArg(true);

最重要的是,尊重订单, 位置可选参数放在列表末尾

问题如下,作为思考的问题:如何使用多个这些位置可选选项?另一个帖子的另一个问题 - 另一天。

感谢。