通过java -jar执行jar包指定配置配置项传入(java -jar 工具包.jar -h)

最终效果图为:

操作方式:

准备:

首先在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("测试成功");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值