【问题标题】:commons cli complex argument listcommons cli 复杂参数列表
【发布时间】:2013-08-11 03:20:50
【问题描述】:

我正在尝试构建一个复杂的参数列表,而不使用 commons-cli 项目链接多个解析器...

基本上我想了解参数和可选参数是如何协同工作的......

示例命令帮助

$ admin <endpoint> <update> <name> [<type>] [<endpoint>] [<descriptions>]

//sample option creation for a    
options.addOption(OptionBuilder.hasArgs(3).hasOptionalArgs(2)
                .withArgName("name> <type> <uri> [<description>] [<endpoint>]")
                .withValueSeparator(' ')
                .create("add"));

CommandLine line = parser.parse(options, args, true);

命令行不区分必需参数和可选参数...如何在不必为可选选项链接第二个解析器的情况下检索它们?

【问题讨论】:

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


    【解决方案1】:

    我不确定 Commons CLI 是否适用于未命名的、位置相关的参数,这似乎是您正在寻找的。我会这样写:

    Option endpoint    = OptionBuilder.hasArgs(2)   .isRequired(true) .create("endpoint");
    Option update      = OptionBuilder.hasArg(false).isRequired(false).create("update");
    Option name        = OptionBuilder.hasArg(true) .isRequired(true) .create("name");
    Option type        = OptionBuilder.hasArg(true) .isRequired(false).create("type");
    Option description = OptionBuilder.hasArg(true) .isRequired(false).create("description");
    

    我不能 100% 确定第一个 endpoint 是否需要两个参数,或者只需要一个但最多可以接受两个;完全使用两个不同的参数可能会更清楚。

    这将导致帮助行看起来像:

    usage: admin
    -endpoint <point> [<point>]
    -update
    -name <name>
    [-type <type>]
    [-description <description>]
    

    字符串名称我一般使用常量:

    public static final String ENDPOINT = "endpoint";
    ...
    Option endpoint = OptionBuilder.hasArg().create(ENDPOINT);
    

    这样你以后可以参考:

    CommandLine opts = parser.parse(myopts, argv);
    String endpoint = opts.getOptionValue(ENDPOINT);
    

    希望有帮助!

    【讨论】:

    • 我认为 isRequired() 也需要 true 才能进行 Option update
    • 请注意,从 CLI v1.3 开始,OptionBuilder 类已被弃用。请改用静态方法Option.builder()(参见stackoverflow.com/questions/35050704/…)。
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2013-06-15
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多