时海君:apache第一讲-commons cli
hello, 大家好,我是时海君,时海君就是我,一个自认为智商偏高,情商偏低的程序员。纵使程序虐我千百遍,我待IT如初恋。从今往后看破红尘,两耳不闻窗外事,一心只写圣贤代码。时海君这些年在java后台开发、大数据领域颇有些经验,从今天起带大家走进java企业级应用。
搞java开发的应该都听过apache社区,如果你没有听过千万别说认识时海君。apache 是IT行业鼎鼎有名的开源社区,该社区托管孵化了当前赫赫有名的项目:hadoop、spark、kafka、lucene等等。可以说计算机发展的如此迅速,尤其是时下如火如荼的大数据领域,apache社区功不可没 。
好了废话少说,以后时海君会带大家一起探索it行业各种有趣的话题(更多交流qq群::476031035),今天是第一讲,请大家多多支持。
apache第一讲-commons cli
apache commons-cli 是一个命令行参数解析工具,支持多种风格命令行参数的解析,能够生成优雅的帮助信息。可以说是编写命令行工具的必备神器。想想自己花了很多精力写了一个很NB的软件,结果在展示给自己团队或客户面前时因为很难用,大家不买账是不是非常憋屈,相反,有的人只做了一个很简单的工具,但是非常好用,帮助信息也很详细,对比一下是不是心里更憋屈。所以时海君认为:软件核心功能固然重要,但是对软件的包装也很重要,这些花哨的东西(如帮助信息、文档)才是你成果的展现,请记住不要让你的成果闷死在大脑里。
今天我们的主角commons-cli就是这样一个对核心功能进行包装展示的工具类api,实战应用场景包括Ant, Hadoop等。
commons-cli 支持以下风格的命令行参数解析:
POSIX 风格 如: tar -zxvf foo.tar.gz
GNU 长参数风格: du --human-readable --max-depth=1
Java 属性风格: java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo
短杠带参数值风格: ie. gcc -O2 foo.c
长杠不带值风格: ant -projecthelp
通过apache commons cli 能够打印类似如下优雅的帮助信息
usage: ls-A,--almost-all do not list implied . and ..-a,--all do not hide entries starting with .-B,--ignore-backups do not list implied entried ending with ~-b,--escape print octal escapes for nongraphic characters--block-size <SIZE> use SIZE-byte blocks-c with -lt: sort by, and show, ctime (time of lastmodification of file status information) with-l:show ctime and sort by name otherwise: sortby ctime-C list entries by columns
示例:
代码位置:https://github.com/k6k4com/examples-apache-commons/tree/master/commons-cli
package com.k6k4.examples.apache.commons.cli;import org.apache.commons.cli.CommandLine;import org.apache.commons.cli.CommandLineParser;import org.apache.commons.cli.DefaultParser;import org.apache.commons.cli.HelpFormatter;import org.apache.commons.cli.Option;import org.apache.commons.cli.OptionBuilder;import org.apache.commons.cli.Options;import org.apache.commons.cli.ParseException;/*** Created by k6k4 on 16/10/29.*/public class CliExample {public static void main(String[] args) throws ParseException {Options options = new Options();options.addOption("a", false, "hello a");options.addOption("b", true, "hello b");options.addOption("c", "c-long", false, "hello c");options.addOption("d", "d-long", true, "hello d");Option e = OptionBuilder.withArgName("eArg").hasArg().withDescription("hello e").create("e");Option f = OptionBuilder.withArgName("key=value").hasArgs(2).withValueSeparator().withDescription("hello f").create("f");options.addOption(e);options.addOption(f);args = new String[]{"-a", "-b", "bValue", "--c-long", "-d", "dValue", "-fKey=fValue"};handle(options, args);}public static void handle(Options options, String[] args) throws ParseException {CommandLineParser parser = new DefaultParser();CommandLine cl = parser.parse(options, args);HelpFormatter hf = new HelpFormatter();hf.printHelp("Help Message", options);if (cl.hasOption("a")) {System.out.println("-a");}if (cl.hasOption("b")) {System.out.println("-b:" + cl.getOptionValue("b"));}if (cl.hasOption("c-long")) {System.out.println("--c-long");}System.out.println("--d-long:" + cl.getOptionValue("d-long", "dValueDefault"));System.out.println("-e:" + cl.getOptionValue("e", "eValueDefault"));if (cl.hasOption("f")) {System.out.println("-f:" + cl.getOptionValue("f"));}}}
欢迎加入: java企业级应用交流qq群(476031035)
欢迎转载: 转载请注明作者 时海君,及来源 http://blog.csdn.net/wodwl/article/details/53148422
时海君:apache第一讲-commons cli相关推荐
- 使用 Apache Commons CLI 开发命令行工具
http://www.ibm.com/developerworks/cn/java/j-lo-commonscli/index.html 使用 Apache Commons CLI 开发命令行工具 杨 ...
- Java命令行界面(第1部分):Apache Commons CLI
尽管我通常使用Groovy编写要从命令行运行的JVM托管脚本,但是有时候我需要解析Java应用程序中的命令行参数,并且有很多库可供Java开发人员用来解析命令行参数. 在本文中,我将介绍这些Java命 ...
- 使用 Apache Commons CLI 解析命令行参数示例
很好的输入参数解析方法 ,转载记录下 转载在: https://www.cnblogs.com/onmyway20xx/p/7346709.html Apache Commons CLI 简介 Apa ...
- flink报错org.apache.commons.cli.Option.builder
问题复现: yarn-session.sh 完整报错如下: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bindi ...
- Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument f/h/s/v......
今日在做一个基于Command CLI通过命令行控制参数的小模块,在输入-f参数后,报出这个错误: Caused by: org.apache.commons.cli.MissingArgumentE ...
- Java基础第一讲:Java的故事和Java编程环境搭建
{ Android学习指南 } 适于自学的ANDORID学习指南,基于ANDROID 2.2.2.3.3及3.0版本讲解 <ANDROID学习指南>目录 RSS Java基础第一讲:Jav ...
- commons-io_从Commons CLI迁移到picocli
commons-io 最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对pic ...
- commons cli_从Commons CLI迁移到picocli
commons cli 最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对pi ...
- 从Commons CLI迁移到picocli
最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣. 为什 ...
最新文章
- compat mysql51 5.1_MySQL mysql-5.1升级到mysql-5.6
- VMware Tools安装和卸载
- Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
- 23种设计模式简介_设计模式简介
- python第三方库文件传输助手_Python中的第三方模块(itchat)
- java多线程创建一个简单的案例
- KDD18 DIN Deep Interest Network for Click-Through Rate Prediction
- 移动端车牌识别,小功能大作用
- Android项目源码(八个)
- python按顺序执行函数_Python3的unittest用例按编写顺序执行
- 合并时显示是无效的m3u8文件_合并M3U8文件方法
- 作为程序员的硬实力是什么 ?
- linux命令小记(grep、awk、sed)
- 2022非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输~
- 2011—那些人那些事
- MySQL数据查询---连接查询
- android中集成阿里云金融级实人认证
- 在Ubuntu18.04上安装USTC-TK2016
- GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码
- Python 将 mp3 导出为 ogg 格式
热门文章
- 华为鲲鹏HCIA考试-练习01
- 右侧交易法则在均线系统上的具体应用
- 昝辉SEO告诉你:SEO是什么鬼
- 程序员面试金典--笔记(精华篇)
- cc2530期末试卷_ZigBee期末试题
- 查找字符串最后一次出现的位置
- FFMPEG avformat_find_stream_info替换
- stringstream,istringstream和ostringstream
- 【信息技术刷题记录】 05 PS、CAD相关知识及移动商务知识篇
- python月球地球质量计算_科学网—天文计算PyEphem指南 - 张金龙的博文