最终效果图为:
操作方式:
准备:
首先在pom.xml中引入依赖
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.78</version>
</dependency>
创建工具类
public class ArgsTools {
int step = -1;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
// 需要指定 @Parameter 注解,配置项参数为 -h 或者 --help,
// description为帮助信息,help = true,说明这个配置项是一个帮助信息
@Parameter(names = {"-h", "--help"}, description = "查看帮助", help = true)
private boolean help;
// 配置项为 configPath,该项是必须参数(只是展示有这样一个参数),如果没有指定默认值为 test/config.conf
@Parameter(names = {"--configPath"}, description = "测试文件路径", required = true)
public String configPath = "test/config.conf";
// 通过-b 或者 --begin 命令都可以,在构造方法中,指定begin默认值为当前时间,
// 每次运行 java -jar命令时,该值的默认值是不一样的
@Parameter(names = {"-b", "--begin"}, description = "起始时间")
public String begin = "";
public ArgsTools() {
calendar.add(Calendar.DATE, step);
if (begin.equals("")) {
begin = dateFormat.format(calendar.getTime());
}
}
/**
* 如果help配置项(变量)不为空,说明指定了 -h 参数,则执行jCommander的帮助方法
* @param jCommander jCommander对象
*/
public void run(JCommander jCommander) {
if (help) {
jCommander.usage();
System.exit(0);
}
}
}
创建get子命令工具类
public class ArgsToolsOfGet {
//帮助
@Parameter(names = {"-h", "--help"}, description = "查看帮助", help = true)
private boolean help;
// 获取配置信息
@Parameter(names = {"-name"}, description = "获取配置",required=true)
public String name="";
public ArgsToolsOfGet(){
}
public void run(JCommander jCommander) {
if (help) {
jCommander.usage();
System.exit(0);
}
}
}
创建主类
public class Main {
public static void main(String[] args) {
// 创建工具类对象
ArgsTools argsTools = new ArgsTools();
// 创建get子命令工具类对象
ArgsToolsOfGet argsToolsOfGet=new ArgsToolsOfGet();
// 创建JCommander对象,将工具类对象加入,同时添加get子命令,将get子命令工具类对象加入
JCommander jCommander = JCommander.newBuilder()
.addObject(argsTools)
.addCommand("get",argsToolsOfGet)
.build();
// JCommander对象解析执行 java -jar命令时传入的参数
jCommander.parse(args);
// 调用工具类对象的run方法,传入JCommander对象
argsTools.run(jCommander);
// 调用get子命令工具类对象的run方法,但是从JCommander对象中找到get子命令的JCommander对象
argsToolsOfGet.run(jCommander.findCommandByAlias("get"));
if(!argsToolsOfGet.name.equals("")){
System.out.println("测试成功");
}
}
}