您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    运用 commons-cli 解析 Java 中的命令行选项
    时间:2021-08-19 21:03 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    让用户用命令行选项调整你的 Java 运用顺序运转方式。

    运用 commons-cli 解析 Java 中的命令行选项

    通常向终端中输入命令时,无论是启动 GUI 运用顺序还是仅启动终端运用顺序,都可以运用 命令行选项options or switches or flags (以下简称选项)来修正运用顺序的运转方式。这是 POSIX 标准 设定的标准,因此可以检测和解析选项对 Java 顺序员而言是很有用的技艺。

    Java 中有若干种解析选项的办法,其中我最喜欢用的是 Apache Commons CLI 库,简称 commons-cli。

    安装 commons-cli

    假设你运用相似 Maven 之类的项目管理系统以及集成开发环境Integrated Development Environment(简称 IDE),可以在项目属性(比如 pom.xml 配置文件或许 Eclipse 和 NetBeans 的配置选项卡)中安装 Apache Commons CLI 库。

    而假设你采用手动方式管理库,则可以从 Apache 网站下载 该库的最新版本。下载到本地的是几个捆绑在一同的 JAR 文件,你只需求其中的一个文件 commons-cli-X.Y.jar(其中 X 和 Y 代指最新版本号)。把这个 JAR 文件或手动或运用 IDE 添加到项目,就可以在代码中运用了。

    将库导入至 Java 代码

    在运用 commons-cli 库之前,必须首先导入它。关于本次选项解析的复杂示例而言,可以先在 Main.java 文件中复杂写入以下标准代码:

    package com.opensource.myoptparser; 

    import org.apache.commons.cli.*; 

    public class Main { 

        public static void main(String[] args) { 

        // code  

        } 

    至此在 Java 中解析选项的预备任务曾经做好了。

    在 Java 中定义布尔选项

    要完成解析选项,首先要定义运用顺序可接纳的有效选项。运用 Option(留意是双数)类来创立选项对象,运用 Options(留意是双数)类来追踪项目中创立的一切选项。

    首先为选项创立一个组,按照常规命名为 options:

    //code 

    Options options = new Options(); 

    接上去,经过列出短选项(即选项名简写)、长选项(即全写)、默许布尔值(LCTT 译注:设置能否需求选项参数,指定为 false 时此选项不带参,即为布尔选项)和协助信息来定义选项,然后设置该选项能否为必需项(LCTT 译注:下方创立 alpha 对象的代码中未手动设置此项),最后将该选项添加到包含一切选项的 options 组对象中。在下面几行代码中,我只创立了一个选项,命名为 alpha:

    //define options 

     Option alpha = new Option("a""alpha"false"Activate feature alpha"); 

     options.addOption(alpha); 

    在 Java 中定义带参选项

    有时用户需求经过选项提供 true 或 false 以外的信息,比如给出配置文件、输入文件或诸如日期、颜色这样的设置项值。这种状况可以运用 builder 办法,依据选项名简写为其创立属性(例如,-c 是短选项,--config 是长选项)。完成定义后,再将定义好的选项添加到 options 组中:

    Option config = Option.builder("c").longOpt("config"

        .argName("config"

        .hasArg() 

        .required(true

        .desc("set config file").build(); 

    options.addOption(config); 

    builder 函数可以用来设置短选项、长选项、能否为必需项(本段代码中必需项设置为 true,也就意味着用户启动顺序时必须提供此选项,否则运用顺序无法运转)、协助信息等。

    运用 Java 解析选项

    定义并添加一切能够用到的选项后,需求对用户提供的参数停止迭代处置,检测能否有参数同预设的有效短选项列表中的内容相婚配。为此要创立命令行 CommandLine 本身的一个实例,其中包含用户提供的一切参数(包含有效选项和有效选项)。为了处置这些参数,还要创立一个 CommandLineParser 对象,我在代码中将其命名为 parser。最后,还可以创立一个 HelpFormatter 对象(我将其命名为 helper),当参数中缺少某些必需项或许用户运用 --help 或 -h 选项时,此对象可以自意向用户提供一些有用的信息。

    // define parser 

        CommandLine cmd; 

        CommandLineParser parser = new BasicParser(); 

        HelpFormatter helper = new HelpFormatter(); 

    最后,添加一些条件判别来剖析用户提供的选项,我们假定这些选项曾经作为命令行输入被获取并存储在 cmd 变量中。这个示例运用顺序有两种不同类型的选项,但对这两种类型都可以运用 .hasOption 办法加上短选项称号来检测选项能否存在。检测到一个存在的选项后,就可以对数据做进一步操作了。

    try { 

        cmd = parser.parse(options, args); 

        if(cmd.hasOption("a")) { 

        System.out.println("Alpha activated"); 

        } 

        if (cmd.hasOption("c")) { 

        String opt_config = cmd.getOptionValue("config"); 

        System.out.println("Config set to " + opt_config); 

        } 

    } catch (ParseException e) { 

        System.out.println(e.getMessage()); 

        helper.printHelp("Usage:", options); 

        System.exit(0); 

    (责任编辑:admin)