参考链接

导入依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>commons-cli</groupId>
  4. <artifactId>commons-cli</artifactId>
  5. <version>1.4</version>
  6. </dependency>
  7. </dependencies>

简介

common-cli组件是一个解析命令参数的jar包,它能解析gnu风格参数、posix风格参数。精简而又强大,大小仅由二十多个class组成,maven地址如下:
传参示例java -jar CommandLine.jar -in a.txt -out b.txt -o options

一个example

  1. import org.apache.commons.cli.*;
  2. public class Arguments {
  3. private static Arguments arguments;
  4. private static String projectName = "CommandLine Test";
  5. private String[] args;
  6. // 解析存储的参数
  7. String inFilePath;
  8. String outFilePath;
  9. long longNum;
  10. int intNum;
  11. String option;
  12. private Arguments(String[] args) {
  13. this.args = args;
  14. }
  15. public static Arguments getInstance(String[] args) {
  16. arguments = new Arguments(args);
  17. arguments.initFromCmd();
  18. return arguments;
  19. }
  20. private void initFromCmd() {
  21. Options options = new Options();
  22. options.addRequiredOption("in", "data", true, "(Required) File path of data set");
  23. options.addRequiredOption("out", "output", true, "(Required) File path of output");
  24. options.addOption("l", "longNum", true, "a long type number");
  25. options.addOption("i", "intNum", true, "a int type number");
  26. options.addOption("o", "option", true, "a option parameter");
  27. options.addOption("h", "help", false, "Help");
  28. CommandLineParser parser = new DefaultParser();
  29. HelpFormatter formatter = new HelpFormatter();
  30. CommandLine cmd = null;
  31. try {
  32. cmd = parser.parse(options, args);
  33. if (cmd.hasOption("h")) {
  34. formatter.printHelp(projectName, options);
  35. System.exit(0);
  36. }
  37. } catch (ParseException e) {
  38. formatter.printHelp(projectName, options);
  39. System.out.println("运行了catch");
  40. System.exit(1);
  41. }
  42. // 提取参数到成员变量
  43. inFilePath = cmd.getOptionValue("in");
  44. outFilePath = cmd.getOptionValue("out", inFilePath + "_result");
  45. longNum = Long.parseLong(cmd.getOptionValue("s", "0"));
  46. intNum = Integer.parseInt(cmd.getOptionValue("i", "0"));
  47. option = cmd.getOptionValue("o", "null");
  48. }
  49. }
  1. public class Main {
  2. public static void main(String[] args) {
  3. if (args.length == 0) {
  4. System.out.println("没有命令行参数运行");
  5. System.exit(0);
  6. }
  7. Arguments arguments = Arguments.getInstance(args);
  8. System.out.println("打印输入的命令行参数:");
  9. System.out.println("输入的intNum: " + arguments.intNum);
  10. System.out.println("输入的longNum: " + arguments.longNum);
  11. System.out.println("输入的inFilePath: " + arguments.inFilePath);
  12. System.out.println("输入的outFilePath: " + arguments.outFilePath);
  13. System.out.println("输入的option: " + arguments.option);
  14. }
  15. }