10

在 Apache Commons CLI 库中,是否可以绕过短名称的使用,从而强制用户使用长名称?

通常,选项定义如下:

new Option("u", "username", true, "automatic user name")

我想禁止使用“u”。但是如果我用或空字符串替换它null,就会有例外......

为什么有这个要求?我希望我的所有选项都只采用 --optionName=optionValue 的形式,因为我的应用程序的某些部分是 Spring Boot 并且 Spring Boot 默认识别这种格式的选项。

此外,为了开发人员和用户之间的一致性以及简化文档,我发现如果我们有一种独特的方式来使用选项而不是 2 会更好。

4

1 回答 1

9

使用最新版本的 Apache Commons Cli 1.3.1 和(现在唯一不推荐使用的)时,null作为短名称传入对我有用:DefaultParser

    Options options = new Options();

    Option option = new Option(null, "help", true, "some desc");

    options.addOption(option);

    CommandLineParser parser = new DefaultParser();
    CommandLine cmd = parser.parse( options, new String[] {"--help=foobar"});

    // automatically generate the help statement
    HelpFormatter formatter = new HelpFormatter();
    formatter.printHelp( "ant", options );

    assertEquals(cmd.hasOption("help"), true); 
    String optionValue = cmd.getOptionValue("help"); 
    assertEquals("foobar", optionValue);
于 2016-07-21T09:21:11.407 回答