有没有办法解析 Apache Commons CLI 中选项对象中不存在的未知选项。 例如-我的参数是
--greeting
hello
--unknownArgument
foo
。
选项对象有问候语作为选项:
options.addOption("greeting", true, "display greeting");
但是
unknownArgument
不是一个选择。
有没有办法我仍然可以接受它作为一个选项并进行进一步处理(将其发送到下游流程)?
已解析的命令行有一个方法
getArgList()
,它返回所有剩余的未解析参数,所以听起来很匹配。
但是,如果您尝试传递命令行,commons-cli 会抱怨无法识别的选项。
使其工作的唯一方法是添加双破折号,这作为库应停止解析命令行选项的指示符。
例如请参阅以下代码片段,如果没有“--”,则无法解析参数:
Option optGreeting = Option.builder()
.hasArg(true)
.longOpt("greeting")
.build();
Options opts = new Options();
opts.addOption(optGreeting);
String[] args = new String[] { "--greeting", "hello", "--", "--unknownArgument", "foo" };
CommandLineParser parser = new DefaultParser();
final CommandLine cmdLine;
try {
cmdLine = parser.parse(opts, args);
} catch (ParseException ex) {
System.err.println("Syntax error: " + ex.getMessage());
return;
}
if (cmdLine.hasOption(optGreeting)) {
for (String path : cmdLine.getOptionValues(optGreeting))
System.out.println("greeting: " + path);
}
for (Object file : cmdLine.getArgList()) {
System.out.println("additional: " + file);
}