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相关推荐

  1. 使用 Apache Commons CLI 开发命令行工具

    http://www.ibm.com/developerworks/cn/java/j-lo-commonscli/index.html 使用 Apache Commons CLI 开发命令行工具 杨 ...

  2. Java命令行界面(第1部分):Apache Commons CLI

    尽管我通常使用Groovy编写要从命令行运行的JVM托管脚本,但是有时候我需要解析Java应用程序中的命令行参数,并且有很多库可供Java开发人员用来解析命令行参数. 在本文中,我将介绍这些Java命 ...

  3. 使用 Apache Commons CLI 解析命令行参数示例

    很好的输入参数解析方法 ,转载记录下 转载在: https://www.cnblogs.com/onmyway20xx/p/7346709.html Apache Commons CLI 简介 Apa ...

  4. flink报错org.apache.commons.cli.Option.builder

    问题复现: yarn-session.sh 完整报错如下: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bindi ...

  5. Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument f/h/s/v......

    今日在做一个基于Command CLI通过命令行控制参数的小模块,在输入-f参数后,报出这个错误: Caused by: org.apache.commons.cli.MissingArgumentE ...

  6. Java基础第一讲:Java的故事和Java编程环境搭建

    { Android学习指南 } 适于自学的ANDORID学习指南,基于ANDROID 2.2.2.3.3及3.0版本讲解 <ANDROID学习指南>目录 RSS Java基础第一讲:Jav ...

  7. commons-io_从Commons CLI迁移到picocli

    commons-io 最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对pic ...

  8. commons cli_从Commons CLI迁移到picocli

    commons cli 最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对pi ...

  9. 从Commons CLI迁移到picocli

    最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器,但是它的API显示了它的年龄. 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣. 为什 ...

最新文章

  1. compat mysql51 5.1_MySQL mysql-5.1升级到mysql-5.6
  2. VMware Tools安装和卸载
  3. Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
  4. 23种设计模式简介_设计模式简介
  5. python第三方库文件传输助手_Python中的第三方模块(itchat)
  6. java多线程创建一个简单的案例
  7. KDD18 DIN Deep Interest Network for Click-Through Rate Prediction
  8. 移动端车牌识别,小功能大作用
  9. Android项目源码(八个)
  10. python按顺序执行函数_Python3的unittest用例按编写顺序执行
  11. 合并时显示是无效的m3u8文件_合并M3U8文件方法
  12. 作为程序员的硬实力是什么 ?
  13. linux命令小记(grep、awk、sed)
  14. 2022非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输~
  15. 2011—那些人那些事
  16. MySQL数据查询---连接查询
  17. android中集成阿里云金融级实人认证
  18. 在Ubuntu18.04上安装USTC-TK2016
  19. GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码
  20. Python 将 mp3 导出为 ogg 格式

热门文章

  1. 华为鲲鹏HCIA考试-练习01
  2. 右侧交易法则在均线系统上的具体应用
  3. 昝辉SEO告诉你:SEO是什么鬼
  4. 程序员面试金典--笔记(精华篇)
  5. cc2530期末试卷_ZigBee期末试题
  6. 查找字符串最后一次出现的位置
  7. FFMPEG avformat_find_stream_info替换
  8. stringstream,istringstream和ostringstream
  9. 【信息技术刷题记录】 05 PS、CAD相关知识及移动商务知识篇
  10. python月球地球质量计算_科学网—天文计算PyEphem指南 - 张金龙的博文