1、功能
Apache Commons CLI 是一个用于解析命令行参数的库,可以轻松处理应用程序中的命令行选项。它支持短选项(如 -h)和长选项(如 --help),并提供丰富的功能,如必填参数、参数类型、帮助信息等
2、使用
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
import org.apache.commons.cli.*;
public class Demo {
public static void main(String[] args) throws Exception {
// 创建选项对象
Options options = new Options();
// 添加选项 : -h 或 --help 选项,没有参数
Option help = new Option("h", "help", false, "显示帮助信息");
options.addOption(help);
// 添加选项 : -v 或 --version 选项,没有参数
Option version = new Option("v", "version", false, "显示版本");
options.addOption(version);
// 添加选项 : -c 或 --config 选项,后面需要跟参数
Option config = new Option("c", "config", true, "指定配置文件路径");
config.setRequired(false); // 可选参数
options.addOption(config);
// 解析命令行参数
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
CommandLine cmd;
try {
cmd = parser.parse(options, args);
// 处理 -h 或者 --help选项
if (cmd.hasOption("h")) {
formatter.printHelp("CommandLineExample", options);
System.exit(0);
}
// 处理 -v 或 --version 选项
if (cmd.hasOption("v")) {
System.out.println("版本 1.0");
System.exit(0);
}
// 处理 -c 或 --config 选项
if (cmd.hasOption("c")) {
String configFilePath = cmd.getOptionValue("c");
System.out.println("使用的配置文件路径 :" + configFilePath);
} else {
System.out.println("未提供配置文件");
}
} catch (Exception e) {
System.out.println(e.getMessage());
formatter.printHelp("CommandLineExample", options);
System.exit(1);
}
}
}
3、代码解析
- Options 类:用于定义选项。每个选项可以有短选项(如 -h)和长选项(如 --help),并且可以指定是否需要参数。代表命令行的一个选项。可以通过 setRequired() 设置是否为必需参数。
- DefaultParser 类:用于解析命令行参数,生成 CommandLine 对象。
- CommandLine 类:保存解析后的命令行参数,可以使用 hasOption() 判断某个选项是否存在,用 getOptionValue() 获取选项值。
- HelpFormatter 类:用于在控制台打印帮助信息
4、结果输出
java Demo -h
usage: CommandLineExample
-c,--config <arg> 指定配置文件路径
-h,--help 显示帮助信息
-v,--version 显示版本信息
java Demo -c /opt/config/application.yaml
使用的配置文件路径: /opt/config/application.yaml
java Demo -v
版本 1.0
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。