参考链接
导入依赖
<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);}}
