参考链接
导入依赖
<dependencies>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
简介
common-cli组件是一个解析命令参数的jar包,它能解析gnu风格参数、posix风格参数。精简而又强大,大小仅由二十多个class组成,maven地址如下:
传参示例java -jar CommandLine.jar -in a.txt -out b.txt -o options
一个example
import org.apache.commons.cli.*;
public class Arguments {
private static Arguments arguments;
private static String projectName = "CommandLine Test";
private String[] args;
// 解析存储的参数
String inFilePath;
String outFilePath;
long longNum;
int intNum;
String option;
private Arguments(String[] args) {
this.args = args;
}
public static Arguments getInstance(String[] args) {
arguments = new Arguments(args);
arguments.initFromCmd();
return arguments;
}
private void initFromCmd() {
Options options = new Options();
options.addRequiredOption("in", "data", true, "(Required) File path of data set");
options.addRequiredOption("out", "output", true, "(Required) File path of output");
options.addOption("l", "longNum", true, "a long type number");
options.addOption("i", "intNum", true, "a int type number");
options.addOption("o", "option", true, "a option parameter");
options.addOption("h", "help", false, "Help");
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
if (cmd.hasOption("h")) {
formatter.printHelp(projectName, options);
System.exit(0);
}
} catch (ParseException e) {
formatter.printHelp(projectName, options);
System.out.println("运行了catch");
System.exit(1);
}
// 提取参数到成员变量
inFilePath = cmd.getOptionValue("in");
outFilePath = cmd.getOptionValue("out", inFilePath + "_result");
longNum = Long.parseLong(cmd.getOptionValue("s", "0"));
intNum = Integer.parseInt(cmd.getOptionValue("i", "0"));
option = cmd.getOptionValue("o", "null");
}
}
public class Main {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("没有命令行参数运行");
System.exit(0);
}
Arguments arguments = Arguments.getInstance(args);
System.out.println("打印输入的命令行参数:");
System.out.println("输入的intNum: " + arguments.intNum);
System.out.println("输入的longNum: " + arguments.longNum);
System.out.println("输入的inFilePath: " + arguments.inFilePath);
System.out.println("输入的outFilePath: " + arguments.outFilePath);
System.out.println("输入的option: " + arguments.option);
}
}