在这种情况下,您必须定义两组选项并解析命令行两次。第一组选项包含位于所需组(通常为 和 )之前的选项,第二组包含所有选项。--help
--version
首先解析第一组选项,如果未找到匹配项,则继续解析第二组。
下面是一个示例:
Options options1 = new Options();
options1.add(OptionsBuilder.withLongOpt("help").create("h"));
options1.add(OptionsBuilder.withLongOpt("version").create());
CommandLine cl = new DefaultParser().parse(options1, args, true);
if (!cl.getOptions().isEmpty()) {
} else {
OptionGroup group = new OptionGroup();
group.add(OptionsBuilder.withLongOpt("input").hasArg().create("i"));
group.add(OptionsBuilder.withLongOpt("output").hasArg().create("o"));
group.setRequired(true);
Options options2 = new Options();
options2.addOptionGroup(group);
try {
cl = new DefaultParser().parse(options2, args);
} catch (ParseException e) {
}
}