Apache Commons CLI:如何防止使用短名称选项?

时间:2016-07-20 10:49:21

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

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

通常,选项定义如下:

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

我想禁止使用" u"。但如果我用null或空字符串替换它,则有例外...

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

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

1 个答案:

答案 0 :(得分:7)

当使用最新版本的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);