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

Fra*_*rot 8 java command-line-interface apache-commons apache-commons-cli

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

通常,选项定义如下:

new Option("u", "username", true, "automatic user name")
Run Code Online (Sandbox Code Playgroud)

我想禁止使用"你".但是,如果我用null空字符串替换它,有例外...

为什么这个要求?我希望我的所有选项只能以--optionName = optionValue的形式出现,因为我的应用程序的某些部分是Spring Boot,而Spring Boot默认选择此格式的选项.

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

cen*_*tic 7

null当使用最新版本的Apache Commons Cli 1.3.1和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);
Run Code Online (Sandbox Code Playgroud)