文档章节

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

haopeng
 haopeng
发布于 2016/03/28 19:01
字数 370
阅读 162
收藏 6
需要加入 依赖包 
   <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 

执行-help 与-h 一样

执行 -b

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

© 著作权归作者所有

共有 人打赏支持
haopeng
粉丝 18
博文 120
码字总数 14788
作品 1
朝阳
私信 提问
rocketmq番外篇(一):开发命令行

匠心零度 转载请注明原创出处,谢谢! 说在前面 虽然是以rocketmq引出的开发命令行,但是任何java应用如果需要都可以借鉴引用,也是通用技术。 主题 rocketmq使用例子 Apache Commons CLI简介...

匠心零度
2018/10/29
0
0
Apache java项目全介绍

Jakarta项目是ASF(The Apache Software Foundation)的一部分。 ASF是一个非赢利组织,她鼓励基于开放的软件许可下进行合作、注重实效的开发,并提供各个领域的高质量软件,她涉及到 Http服务...

Sephiroth
2010/04/05
1K
1
Apache commons (Java常用工具包)简介

Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html BeanUtils Commons-BeanUtils 提供对 Java...

Coder小兵
2012/02/04
0
0
linux下如何批量杀JAVA进程或某个进程方法

pkill -9 java 或者 ps -ef | grep java | grep -v grep | cut -c 9-15 | xargs kill -9 运行这条命令将会杀掉所有含有关键字"java"的进程 下面将这条命令作一下简单说明: 管道符"|"用来隔开......

超级大黑猫
2018/11/23
0
0
linux下tomcat服务的相关命令

一:Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 切换到tomcat主目录下的bin目录(cd usr/local/tomcat/bin) 1,...

leqianlong
2014/02/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
29分钟前
1
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
1
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
0
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
3
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部