zoukankan      html  css  js  c++  java
  • commons-cli介绍

    一、概述

    Apache Commons CLI 库提供API,可以帮助程序去解析传递给程序的命令行参数。它也可以打印帮助信息,来说明可以运用于命令行的有效参数。

    CLI库支持不同格式的选项:

    • OSIX格式的选项(比如:tar -zxvf foo.tar.gz)
    • GNU格式的长参数选项(比如:du --human-readable --max-depth=1)
    • Java格式的属性(比如:java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
    • 带值的单选项(比如:gcc -O2 foo.c)
    • 单-号的长参数选项(比如:ant -projecthelp)

    二、CLI 使用

    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.4</version>
    </dependency>
    /**
     *
     *  org.apache.commons.cli.Options;
     *  org.apache.commons.cli.Option
     *      Option可以通过new生成,也可以通过Option.builder()构造生成。
     *      该类是描述具体参数的基础类,它有以下这些基础属性:
     *          argName 字符串值, 参数值说明
     *          description 字符串值, 参数描述
     *          opt 字符串值, 短选项名, 比如:-p=22,p就是该短选项名
     *          longOpt 字符串值, 长选项类型;比如:-p=22 --port=22,port就是该长选项名
     *          numberOfArgs 整型, 参数个数
     *          optionalArg 布尔型, 是否可选
     *          required 布尔型, 是否必填
     *          type Class, 参数类型
     *          valuesep 字符型, 值分隔符;采用java参数风格解析时用来分支值,如:-Dkey=value。
     *
     *  org.apache.commons.cli.CommandLineParser;
     *      org.apache.commons.cli.DefaultParser
     *  org.apache.commons.cli.CommandLine
     *      CommandLineParser.parse()的产物
     *
     *  org.apache.commons.cli.HelpFormatter
     *
     */
    /****
     * CLI 定义阶段
     *   目标:创建 Options 实例。
     *   addOption() 有几个重载方法,下面使用到的方法有三个参数
     *      第一个参数设定这个 option 的单字符名字
     *      第二个参数指明这个 option 是否需要输入数值
     *      第三个参数是对这个 option 的简要描述。
     * ****/
    // 创建 Options 对象
    Options options = new Options();
    // 添加 -h 参数
    options.addOption("h", "help", false, "Lists short help");
    // 添加 -c 参数
    options.addOption("c", "configFile", true, "Name server config properties file");
    // 添加 -p 参数
    options.addOption("p", "printConfigItem", false, "Print all config item");
    
    /****
     * CLI 解析阶段
     *   目标:创建 CommandLine 实例。
     *   说明:在解析阶段中,通过命令行传入应用程序的文本来进行处理。
     *          处理过程将根据在解析器的实现过程中定义的规则来进行。
     *          在 CommandLineParser 类中定义的 parse 方法将用 CLI 定义阶段中产生的 Options
     *          实例和一组字符串作为输入,并返回解析后生成的 CommandLine。
     * CLI 询问阶段
     *   目标:将所有通过命令行以及处理参数过程中得到的文本信息传递给用户的代码。
     *   说明:在询问阶段中,应用程序通过查询 CommandLine,并通过其中的布尔参数和提供给
     *          应用程序的参数值来决定需要执行哪些程序分支。这个阶段在用户的代码中实现,
     *          CommandLine 中的访问方法为用户代码提供了 CLI 的询问能力。
     *
     * ****/
    CommandLineParser parser = new DefaultParser();
    String[] args = { "-h", "-c", "config.xml" };
    CommandLine cmd = parser.parse(options, args);
    
    HelpFormatter hf = new HelpFormatter();
    hf.setWidth(110);
    if(cmd.hasOption("h")) {
        // 这里显示简短的帮助信息
        hf.printHelp("testApp", options, true);
        // 打印opts的名称和值
        System.out.println("--------------------------------------");
        Option[] opts = cmd.getOptions();
        if (opts != null) {
            for (Option opt1 : opts) {
                String name = opt1.getLongOpt();
                String value = cmd.getOptionValue(name);
                System.out.println(name + "=>" + value);
            }
        }
    }
  • 相关阅读:
    Atitit sql计划任务与查询优化器统计信息模块
    Atitit  数据库的事件机制触发器与定时任务attilax总结
    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx
    Atitit 图像处理 深刻理解梯度原理计算.v1 qc8
    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
    Atitit View事件分发机制
    Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
    Atitti 存储引擎支持的国内点与特性attilax总结
    Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折
  • 原文地址:https://www.cnblogs.com/myitnews/p/12289904.html
Copyright © 2011-2022 走看看