commons-cli java 命令行的实现(类似linux)

需要加入 依赖包 
   <dependency>
	<groupId>commons-cli</groupId>
	<artifactId>commons-cli</artifactId>
	<version>1.3.1</version>

</dependency>


首先实现一个 调用类:


import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;

import cn.v1.video.crawl.document.DocumentParser;
import cn.v1.video.crawl.document.HttpClientDocumentParserImpl;
import cn.v1.video.crawl.document.HttpUnitDocumentParserImpl;

/**
 * 需要加入 依赖包 
 * <dependency>
			<groupId>commons-cli</groupId>
			<artifactId>commons-cli</artifactId>
			<version>1.3.1</version>
		</dependency>
 * @author Administrator
 *
 */
public class Cli {

	private static final Options options = new Options(); 
	private static final DocumentParser httpDocumentParser=new HttpClientDocumentParserImpl();
	private static final DocumentParser httpUnitDocumentParser=new HttpUnitDocumentParserImpl();
	 
	 static{
		 /**
		  * 第一个参数 命令的简写; 第二个参数命令 命令的全写; 第三参数表示是否有参数; 第四个参数 代表 参数的说明
		  */
		// 添加 -h 参数
		 options.addOption("h", "help",false, "The command help"); 
		 options.addOption("b", "http",true, "input url and crawl by http"); 
		 options.addOption("t", "httpUnit",true, "input url and crawl by httpUnit"); 
	 }
	 
	 public static void help(){
		 /**
		  * 打印命令帮助提示
		  */
		 HelpFormatter hf = new HelpFormatter();
		 hf.printHelp("help info", options);
	 }
	 
	 public static void crawlByHttp(String url){
		 try {
			String content=httpDocumentParser.getContent(url);
			System.out.println(content);
		} catch (Exception e) {
			e.printStackTrace();
		}
	 }
	 
	 public static void crawlByHttpUnit(String url){
		 try {
			 String content=httpUnitDocumentParser.getContent(url);
			 System.out.println(content);
		 } catch (Exception e) {
			 e.printStackTrace();
		 }
	 }
	 
	 public static Options getOptions(){
		 return options;
	 }
}


添加调用执行


import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.ParseException;


public class StartUp 
{
    public static void main( String[] args )
    {
    	try {
    		if(args==null || args.length==0 ){
    			Cli.help();
    			return;
    		}
			CommandLineParser parser = new DefaultParser(); //默认的匹配器
			CommandLine cmd = parser.parse(Cli.getOptions(), args); // 定义和输入进行匹配
			if(cmd.hasOption('h')){
				Cli.help();
			}
			if(cmd.hasOption('b')){
				String url=cmd.getOptionValue('b');
				if(url==null || url.equals("")){
					System.out.println("please input url");
				}
				Cli.crawlByHttp(url);
			}
			if(cmd.hasOption('t')){
				String url=cmd.getOptionValue('t');
				if(url==null || url.equals("")){
					System.out.println("please input url");
				}
				Cli.crawlByHttpUnit(url);
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
    }
}


打包为jar包文件 运行:

执行-h 

commons-cli java 命令行的实现(类似linux)_第1张图片

执行-help 与-h 一样

commons-cli java 命令行的实现(类似linux)_第2张图片

执行 -b

大功告成。。。。简单吧。。

你可能感兴趣的:(commons-cli java 命令行的实现(类似linux))