一. common-cli是命令列工具包:包括三個階段:
1. 定義命令列選項
2. 解析命令列選項
3.解釋命令列選項
二. 定義階段:
Options類是Option類的集合
解析階段:
CommandLineParser類為命令列解析類,解析返回CommandLine類
解釋階段:
查詢CommandLine根據不同組合進行不同分支處理
三. 例子:
// create the command line parserCommandLineParser parser = new PosixParser();// create the OptionsOptions options = new Options();options.addOption( "a", "all", false, "do not hide entries starting with ." );options.addOption( "A", "almost-all", false, "do not list implied . and .." );options.addOption( "b", "escape", false, "print octal escapes for nongraphic " + "characters" );options.addOption( OptionBuilder.withLongOpt( "block-size" ) .withDescription( "use SIZE-byte blocks" ) .withValueSeparator( '=' ) .hasArg() .create() );options.addOption( "B", "ignore-backups", false, "do not list implied entried " + "ending with ~");options.addOption( "c", false, "with -lt: sort by, and show, ctime (time of last " + "modification of file status information) with " + "-l:show ctime and sort by name otherwise: sort " + "by ctime" );options.addOption( "C", false, "list entries by columns" );String[] args = new String[]{ "--block-size=10" };try { // parse the command line arguments CommandLine line = parser.parse( options, args ); // validate that block-size has been set if( line.hasOption( "block-size" ) ) { // print the value of block-size System.out.println( line.getOptionValue( "block-size" ) ); }}catch( ParseException exp ) { System.out.println( "Unexpected exception:" + exp.getMessage() );}
四. 自動產生協助聲明:
// automatically generate the help statement
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "ant", options );
列印出來資訊:
usage: ant-D <property=value> use value for given property-buildfile <file> use given buildfile-debug print debugging information-emacs produce logging information without adornments-file <file> search for buildfile towards the root of the filesystem and use it-help print this message-listener <classname> add an instance of class as a project listener-logger <classname> the class which it to perform logging-projecthelp print project help information-quiet be extra quiet-verbose be extra verbose-version print the version information and exit