Apache commons CLI介绍和简单应用

时间:2022-02-04 17:06:56

CLI 即Command Line Interface,也就是"命令行接口",它为Java 程序访问和解析命令行参数提供了一种统一的接口。

apache Commons CLI为用户提供了一个解释命令行的API.

它在解释命令行时主要有三个状态,即:定义、解释和询问交互。

 

通过使用commons cli则可以很容易的访问参数,而不必去循环String[] args。

这个命令需要模拟命令行输入,可以将应用做成jar文件后输入命令行执行,也可以将命令行包装成参数执行。

在eclipse下运行则需要通过Run as /runConfigurations/Arguments来进行命令行参数配置 

在MyEclipse中运行此类,在工程树中右键单击该类选择Run As --> Run Configurations ... --> 选择第二个面板[(x)=Arguments] --> 在Program arguments

 

输入参数: -p 范芳铭 -t time –h

 

用apacheCommons CLI实现的一个简单的示例代码如下:

packagetest.ffm83.commons.CLI;

 

importjava.util.Date;

 

importorg.apache.commons.cli.CommandLine;

importorg.apache.commons.cli.CommandLineParser;

importorg.apache.commons.cli.Options;

importorg.apache.commons.cli.PosixParser;

/**

 * 通过commons CLI进行简单的命令行输入

 * @author 范芳铭

 */

publicclass EasyCLIUsage {

    public static void main(String[] args)throws Exception {

        Options options = new Options(); 

        //true 需要带参数,false 不用参数

        options.addOption("t", true,"display current time");//参数不可用    

        options.addOption("p", true,"person owner");//参数可用    

        options.addOption("h", false,"help");//参数可用    

   

        CommandLineParser parser = newPosixParser();  

        CommandLine cmd = parser.parse(options,args);    

   

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

            String code =cmd.getOptionValue("p");    

            System.out.println("输入参数 p:" + code);    

        }    

   

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

            String code =cmd.getOptionValue("t");    

            System.out.println("输入参数t:" + code + "," +new Date());    

        } 

       

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

            System.out.println("输入参数h:帮助:[-t][-c][-h]");    

        } 

    }

}

 

运行后结果为:

 

输入参数 p:范芳铭

输入参数t:time,Tue Dec 30 09:23:38 CST 2014

输入参数h:帮助:[-t][-c][-h]