`

【apache-commons】CLI

    博客分类:
  • Java
 
阅读更多

命令行参数解析器

用途:对命令行参数进行解析,完成应用程序的配置

比如,启动应用的时候,通过命令行指定端口,如果没有指定,则使用默认的。

 

package org.apache.commons.cli;

public class App {
	public static void main(String[] args) throws ParseException {	
		test(args);
	}

	private static void test(String[] args) throws ParseException {
		Options options = new Options();
		//arg1: 该选项的名称
		//arg2: 该选项后面是否需要跟参数。 如,java -jar命令,jar选择后面不需要后面跟参数,即为false
		//arg3: 该选项的具体描述
		options.addOption("t", false, "don't know");
		options.addOption("c", true, "specify your country");
		
		
		CommandLineParser parser = new BasicParser();
		//在解析之前,必须将所有选项都设置到options中
		CommandLine cmd = parser.parse(options,args);
		
		//不带参数值的选项,只检查此选项是否出现
		if(cmd.hasOption("t"))
			System.out.println("命令行参数出现了't'选项");
		else
			System.out.println("t选项没有出现");
		
		//带参数值的选项,选项可以不出现在参数列表中;一旦出现,就必须跟参数,否则报错
		//如,Run Configuration中配置Arguments参数,输入: -t -c 中国
		String country = cmd.getOptionValue("c");
		if(country==null) 
			System.out.println("没有指定参数值,使用默认值,country=China");
		else 
			System.out.println("你指定的country="+country);
		
		
	}
}

 

	@SuppressWarnings("static-access")
	private static void withArgs(String[] args) throws ParseException {
		Option port = OptionBuilder.withArgName("portNumber")//参数名称
						.hasArg()//需要指定参数值
						.withDescription("listening port")//选项描述
						.create("port");//选项名称
		
		Options options = new Options();
		options.addOption(port);
		
		CommandLineParser parser = new BasicParser();
		CommandLine cmd = parser.parse(options, args);
		
		if(cmd.hasOption("port"))
			System.out.println("use specify port: " + cmd.getOptionValue("port"));
		else 
			System.out.println("use default port:" + 9999);
		
		//格式化输出选项
		HelpFormatter formatter = new HelpFormatter();
		formatter.printHelp("maven", options);
	}

 

 

分享到:
评论

相关推荐

    perun-java-cli:用Java实现的Perun命令行客户端

    对于Perun-java-cli来说,可能使用了Java的IO流进行文件操作,使用了Apache Commons CLI或者JCommander等库来处理命令行参数,还可能使用了HTTP客户端库如OkHttp或Apache HttpClient来与Perun服务端进行通信。...

    powermock-examples-apachecli-1.5.5.zip

    这个压缩包"powermock-examples-apachecli-1.5.5.zip"包含了PowerMock的一个示例项目,专门针对Apache Commons CLI库。PowerMock是一个强大的Java单元测试框架,它允许开发者模拟静态方法、构造函数、final类和方法...

    web-cli-shell.zip_The Web_cli

    在Web_CLI_Shell项目中,它可能列出了Web服务器库(如Jetty或Tomcat)、Web框架(如Spring Boot)、以及任何用于解析和执行CLI命令的库(如Apache Commons CLI)等依赖。 4. `src`:这是源代码目录,通常包含Java源...

    plugins4.rar

    3. **org.apache.commons.cli_1.2.0.v201105210650.jar** - Apache Commons CLI 是一个处理命令行参数的Java库,简化了命令行接口的解析和管理。 4. **jsonedit-validator_0.9.7.jar** - JSON编辑器验证插件,可能...

    mvnrepository.zip

    6. **commons-cli**:Apache Commons CLI库,用于处理命令行选项和参数,简化命令行接口的创建。 7. **backport-util-concurrent**:这个库提供了一些Java并发API的回移植,使得在Java 5之前的版本中也可以使用类似...

    repository1

    7. **commons-cli**:Apache Commons CLI提供了处理命令行参数的工具,使得在Java程序中解析命令行选项变得简单。 8. **backport-util-concurrent**:这个库是Java并发包的回移植,将Java 5和6中的并发特性(如`...

    sample-add-on-terminal:示例附加终端

    7. **API和库的使用**:可能使用了特定的Java库来增强终端功能,例如JLine库用于更好的命令行交互,或Apache Commons CLI用于处理命令行选项。 8. **版本控制**:由于文件名含有"master",这通常与Git版本控制系统...

    pgloader-master_java_java_TheMaster_源码.rar

    5. **命令行界面**:pgloader通常有一个命令行界面供用户交互,这部分源码可能会涉及Java的命令行参数解析,如Apache Commons CLI库。 6. **配置文件处理**:pgloader使用配置文件来定义迁移规则,源码中会有读取和...

    repository.rar

    6. **commons-cli**: Apache Commons CLI 提供了处理命令行参数和选项的功能,方便创建具有命令行界面的应用程序。 7. **backport-util-concurrent**: 这是一个将 Java 5 中的并发工具类(如 Future 和 Executor)...

    CommandLineDriver

    【描述】:CommandLineDriver是一个用于创建交互式命令行应用程序的通用库,它在设计时可能是为了简化用户与程序之间的交互,特别是在开发者在学校期间编写项目时,可能还没有接触到Apache Commons CLI这样的成熟库...

    ScheduleScraper

    7. **命令行界面**:ScheduleScraper可能是通过命令行界面(CLI)与用户交互,使用System.in、System.out进行输入输出,或者使用Apache Commons CLI库来处理命令行参数。 8. **持续集成/持续部署(CI/CD)**:对于一...

    TakeHomeExam:随机生成器程序

    9. **命令行参数处理**: 如果项目通过命令行运行,那么可能使用了Runtime.exec()或者Apache Commons CLI库来处理命令行参数,允许用户定制生成试题的参数。 10. **模板引擎**: 为了动态生成题目,项目可能使用了...

    cursomc

    8. **标准库和第三方库**:Java有丰富的标准库,此外,`cursomc`可能还依赖于一些第三方库(如Apache Commons、Guava等)来增强功能或简化编码。 9. **测试**:良好的软件工程实践通常包括单元测试和集成测试。`...

Global site tag (gtag.js) - Google Analytics