1. Options

private Options options = new Options();

2. option

(1) way1

launcher.options.addOption("h", "help", false, "show help.");

(2) way2

launcher.options.addOption(optFile);

3. command line parser

CommandLineParser cmdParser = new DefaultParser();

4. exec method

     private void help() {
        // This prints out some help
         HelpFormatter formater = new HelpFormatter();
         formater.printHelp(this.getClass().getSimpleName(), options);
         System.exit(0);
     }

5. test

java --SNAPSHOT.jar;C:\Users\xiaobin\.m2\repository\commons-cli\commons-cli\1.4\commons-cli-1.4.jar my.csdn9.ConsoleLauncher --help

ConsoleLauncher.java

package my.csdn9;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

public class ConsoleLauncher {
    // Step 1: otions
    private Options options = new Options();

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ConsoleLauncher launcher = new ConsoleLauncher();

        // Step 2: add option
        Option optFile = Option.builder( "file" )
                .longOpt( "logfile" )
                 .hasArg(false)
                 .desc(  "use given file for log" )
                 .build();

        // Way I: Direct definition
        launcher.options.addOption("h", "help", false, "show help.");
        // Way II: Use the option class to define
        launcher.options.addOption(optFile);
        // Step 3: cmd parser
        CommandLineParser cmdParser = new DefaultParser();
        try {
            CommandLine cmd = cmdParser.parse(launcher.options, args);
            if (cmd.hasOption("h")) {
                launcher.help();
            }
            if (cmd.hasOption("file")) {
                 System.out.println("----file----");
            }
        } catch (ParseException e) {
            // TODO Auto-generated catch block
             e.printStackTrace();
        }

    }

     // Step 4: exec method
     private void help() {
        // This prints out some help
         HelpFormatter formater = new HelpFormatter();
         formater.printHelp(this.getClass().getSimpleName(), options);
         System.exit(0);
     }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tdtc</groupId>
  <artifactId>cliDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>cliDemo</name>
  <dependencies>
      <dependency>
          <groupId>commons-cli</groupId>
          <artifactId>commons-cli</artifactId>
          <version>1.4</version>
      </dependency>
  </dependencies>
</project>

Reference:

1. java command line interfaces - part 1: apache commons

2. Option.Builder

Apache CLI Demo的更多相关文章

  1. 【java】之 apache commons-codec 与Apache Digest demo实例,支持md5 sha1 base64 hmac urlencode

    使用commons-codec 进行加密的一些操作 package com.jiepu.ApacheDigest; import java.io.FileInputStream; import org ...

  2. C# Apache Thrift Demo

    转载至 https://headsigned.com/posts/csharp-apache-thrift-demo/ This demo application shows how to imple ...

  3. 遇见CUBA CLI

    原文:Meet CLI for CUBA Platform 翻译:CUBA China CUBA-Platform 官网 : https://www.cuba-platform.com CUBA Ch ...

  4. Lucene入门-安装和运行Demo程序

    Lucene版本:7.1 一.下载安装包 https://lucene.apache.org/core/downloads.html 二.安装 把4个必备jar包和路径添加到CLASSPATH \lu ...

  5. How-to: Do Real-Time Log Analytics with Apache Kafka, Cloudera Search, and Hue

    Cloudera recently announced formal support for Apache Kafka. This simple use case illustrates how to ...

  6. atitit.跨语言执行cmd cli api的原理及兼容性设计草案

    atitit.跨语言执行cmd cli api的原理及兼容性设计草案 1. 标准输入,标准输出,标准错误与重新定向1 2. 常见问题2 2.1. 执行bat文件2 2.2. 执行bat文件  /c   ...

  7. Lucene-安装和运行Demo程序

    Lucene是什么 Lucene是一款高性能.可扩展的信息检索工具库.- Lucene In Action Lucene版本:7.1 一.下载安装包 https://lucene.apache.org ...

  8. Apache Poi实现excel解析

    一.说明 1.本文通过使用 poi 工具解析 excel 表格数据,实现导入导出 2.excel目前有两种格式 2003版本的 excel.xls 与 2007版本的 excel.xlsx ,注意两种 ...

  9. Dubbo源码本地运行demo遇到的问题

    从github上拉下来的Dubbo源码,运行Dubbo项目的demo工程,报如下错误(Dubbo版本为2.7.6): Exception in thread "main" java ...

随机推荐

  1. mysql存储程序

    什么时候会用到存储过程 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度2.当对数据库进行复杂操作时 ...

  2. 适配器(Adapter)

    Adapter:将一个Class的接口转换成另一个Class的接口,使原本因接口不兼容而不能合作的Class可以一起运作.主要有两种:迭代器适配器(Iterator Adpater)和容器适配器(Co ...

  3. 公式推导:【CFNet】

    [CFNet]: Valmadre J, Bertinetto L, Henriques J F, et al. End-to-end representation learning for Corr ...

  4. java类加载与static

    一.类加载 当jvm去运行一个类时,会先加载该类,把该类在硬盘上字节码加载到jvm的内存.java HelloWorld>字节码会被加载到代码段中>加载过程中会有一些静态的常量,这部分会事 ...

  5. 修改postfix smtp端口,防止公网扫描浪费你的服务器流量

    邮件服务器的默认发送邮件端口是25,一些ISP会封锁25端口防止垃圾邮件的发送,这样就导致不能使用Foxmail.outlook等邮件客户端发送邮件.修改默认smtp端口就可以解决这个问题.下面的方法 ...

  6. Cygwin使用3-修改Cygwin的默认启动路径

    原先启动Cygwin后,pwd显示: C:\Documents and Settings\Administrator@IBM-EBDC0EAC4B7 ~$ pwdC:\Documents and Se ...

  7. 编译NDK的source code一定要用release mode!

    编译NDK的source code一定要用release mode! 编译NDK的source code一定要用release mode! 编译NDK的source code一定要用release m ...

  8. IIS APK MIME

    点击新建-填写扩展名和MIME类型 .apk application/vnd.android.package-archive

  9. 黄聪:PHP代码获取客户端IP地址经纬度及所在城市

    echo $_SERVER['HTTP_HOST']; //echo $_SERVER['REQUEST_URI']; $getIp=$_SERVER["REMOTE_ADDR"] ...

  10. spring AOP的学习

    1.Spring常用的概念 Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点. Pointcut(切入点): ...