在写的程序 打成jar包之后,往其中输入参数,执行不同的函数,其中有Apache 有一个commons-cli 的包,可以实现这样的功能。
maven库:
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
package com.eastcom.first.spark.data.option;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
public class Cli {
private static final Logger log = Logger.getLogger(Cli.class.getName());
private static Options options = new Options();
private static String[] args = { "-h", "-v", "hello,world" };
public static void main(String[] args) throws ParseException {
// 定义阶段
options.addOption("h", "help", false, "show help.");
options.addOption("v", "var", true, "Here you can set parameter .");
// 解析阶段
CommandLineParser parser = new BasicParser();
CommandLine cmd = null;
try {
// 获取参数值,应用程序交互阶段。应用程序启动。
cmd = parser.parse(options, args);
if (cmd.hasOption("h"))
help();
if (cmd.hasOption("v")) {
// cmd.getOptionValue("v") 获得v传入的参数值。
log.log(Level.INFO, "Using cli argument -v=" + cmd.getOptionValue("v"));
// Whatever you want to do with the setting goes here
} else {
log.log(Level.SEVERE, "MIssing v option");
help();
}
} catch (ParseException e) {
log.log(Level.SEVERE, "Failed to parse comand line properties", e);
help();
}
}
private static void help() {
// This prints out some help
HelpFormatter formater = new HelpFormatter();
formater.printHelp("Main", options);
System.exit(0);
}
}
输入参数:
private static String[] args = { "-h", "-v", "hello,world" };
运行结果:
十月 31, 2017 8:32:53 下午 com.eastcom.first.spark.data.option.Cli main
严重: MIssing v option
usage: Main
-h,--help show help.
-v,--var <arg> Here you can set parameter .
输入参数:
String[] args1 = { "-v", "hello,world" };
运行结果:
十月 31, 2017 8:38:35 下午 com.eastcom.first.spark.data.option.Cli main
信息: Using cli argument -v=hello,world
参考链接: https://segmentfault.com/a/1190000006795206