概述
为什么要写这篇文章呢?因为在读flink cdc3.0源码的时候发现了这个工具包,感觉很牛,之前写过shell命令,shell是用getopts来处理命令行参数的,但是其实写起来很麻烦,长时间不写已经完全忘记了,现在才发现原来java也有这种工具类,所以先学习一下这个的使用,也许之后自己在写一些小工具的时候就可以用到呢,在此也分享给大家.
简介
定义 : Apache Commons CLI 是一个java类库.( ps : 什么是定义,定义就是对某类事物的具象化,添加限定词,比如人是什么什么的动物,这里CLI应该再加上多个限定词,因为java类库的范围太大,传达给别人的信息就是不明确的 )
重新定义一下(以上纯抽风) : Apache Commons CLI 是一个可以非常方便解析入参的,并且可以打印帮助信息的一个Java类 API库.
支持的选项类型 :
- POSIX 选项, 例如
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
命令行处理三阶段
命令行的处理分为三个阶段,定义阶段,解析阶段,处理阶段
注意 : 以下代码的版本为1.6.0,maven依赖如下
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.6.0</version>
</dependency>
1.定义阶段
创建命令行可以接收的选项,通过Options类来实现,它是Option的的容器.
// 定义阶段
Options options = new Options();
Option filePathOption = new Option("f", true, "文件路径");
filePathOption.setRequired(true); // 文件路径为必传选项
Option daemonRunOption = new Option("d", false, "后台执行");
Option helpOption = new Option("h", "help", false, "帮忙文档");
options.addOption(filePathOption);
options.addOption(daemonRunOption