如何将java程序打包成带参数的jar文件

来源:互联网 发布:sql 注入 编辑:程序博客网 时间:2024/06/05 10:36

这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码
所需的maven依赖

<dependency>      <groupId>commons-cli</groupId>      <artifactId>commons-cli</artifactId>      <version>1.4</version></dependency>

这里我们贴出主类代码

Options opts = new Options();        opts.addOption("h",  false,"help");        Option portOption = OptionBuilder.withArgName("args")                .withLongOpt("port").hasArg()                .create("p");        opts.addOption(portOption);        Option fileOption = OptionBuilder.withArgName("args")                .withLongOpt("file").hasArg()                .create("f");        opts.addOption(fileOption);        Option kafkaHostOption = OptionBuilder.withArgName("args")                .withLongOpt("kafkaHost").hasArg()                .create("kH");        opts.addOption(kafkaHostOption);        Option kafkaPortOption = OptionBuilder.withArgName("args")                .withLongOpt("kafkaPort").hasArg()                .create("kP");        opts.addOption(kafkaPortOption);        Option kafkaTopicOption = OptionBuilder.withArgName("args")                .withLongOpt("kafkaTopic").hasArg()                .create("kT");        opts.addOption(kafkaTopicOption);        BasicParser parser = new BasicParser();        CommandLine cl;        try {            cl = parser.parse(opts, args);            if (cl.getOptions().length > 0) {                if (cl.hasOption('h')) {                    HelpFormatter hf = new HelpFormatter();                    hf.printHelp("Options", opts);                } else {                    //String ip = cl.getOptionValue("i");                    String port = cl.getOptionValue("p");                    String file = cl.getOptionValue("f");                    String kafkaHost = cl.getOptionValue("kH");                    String kafkaPort = cl.getOptionValue("kP");                    String kafkaTopic = cl.getOptionValue("kT");                    GetInfo getInfo = new GetInfo();                    getInfo.getAndZgrab(file,port,kafkaHost,kafkaPort,kafkaTopic);                }            } else {                System.out.println("参数为空");            }        } catch (Exception e) {            e.printStackTrace();        }

记得将上述代码放到main函数中,将解析args[],这样将程序打包成jar文件后就可以实现我们的需求了。
执行命令:
java -jar jarName.jar -f filename -p port - kH kafkaHost -kP kafkaPort -kT kafkaTopic
如果忘记了都需要传递什么参数,可以通过 java -jar jarName.jar -h 获取参数内容

原创粉丝点击