An annotation based command line parser
Java命令行选项解析之Commons-CLI & Args4J & JCommander
http://rensanning.iteye.com/blog/2161201
JCommander star1000+
This is an annotation based parameter parsing framework for Java 8.
Here is a quick example:
public class JCommanderTest {
    @Parameter
    public List<String> parameters = Lists.newArrayList();
    @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
    public Integer verbose = 1;
    @Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
    public String groups;
    @Parameter(names = "-debug", description = "Debug mode")
    public boolean debug = false;
    @DynamicParameter(names = "-D", description = "Dynamic parameters go here")
    public Map<String, String> dynamicParams = new HashMap<String, String>();
}
and how you use it:
JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit1,unit2,unit3",
"-debug", "-Doption=value", "a", "b", "c" };
JCommander.newBuilder()
.addObject(jct)
.build()
.parse(argv); Assert.assertEquals(2, jct.verbose.intValue());
Assert.assertEquals("unit1,unit2,unit3", jct.groups);
Assert.assertEquals(true, jct.debug);
Assert.assertEquals("value", jct.dynamicParams.get("option"));
Assert.assertEquals(Arrays.asList("a", "b", "c"), jct.parameters);
The full doc is available at http://jcommander.org.
Argparse4j is a command line argument parser library for Java based on Python's argparse module.
Argparse4j is available in Maven central repository:
<dependency>
<groupId>net.sourceforge.argparse4j</groupId>
<artifactId>argparse4j</artifactId>
<version>0.8.0</version>
</dependency>
https://github.com/jankroken/commandline
The Apache Commons CLI library provides an API for parsing command line options passed to programs. It's also able to print help messages detailing the options available for a command line tool.
Commons CLI supports different types of options:
http://commons.apache.org/proper/commons-cli/
https://stackoverflow.com/questions/11704338/java-cli-commandlineparser
https://github.com/jatoben/CommandLine
https://github.com/apache/commons-cli
CLI Parser is a tiny (10k jar), super easy to use library for parsing various kinds of command line arguments or property lists. Using annotations on your fields or JavaBean properties you can specify what configuration is available. Here is an example:
public class Loader {
  @Argument
  private static Boolean hdfs = false;
  @Argument(alias = "r", description = "Regular expression to parse lines", required = true)
  private static String regex;
  @Argument(alias = "k", description = "Key column", required = true)
  private static String key;
  @Argument(alias = "p", description = "Key prefix")
  private static String prefix;
  @Argument(alias = "c", description = "Column groups", delimiter = ",")
  private static String[] columns;
  @Argument(alias = "n", description = "Column names", delimiter = ",")
  private static String[] names;
  @Argument(alias = "h", description = "Redis host")
  private static String host = "localhost";
  @Argument(alias = "p", description = "Redis port")
  private static Integer port = 6379;
  public static void main(String[] args) throws IOException {
    // unparsed will contain all unparsed arguments to the command line
    List<String> unparsed = Args.parseOrExit(Loader.class, args);
    // Loader's fields will be populated after this line or the program will exit with usage
  }
}
In this case we are configuring static fields, but you can also use the same system with instances. If you pass in a wrong command line argument you will get the usage message:
Usage: com.sampullara.cli.Example
  -hdfs [flag]
  -regex (-r) [String] Regular expression to parse lines
  -key (-k) [String] Key column
  -prefix (-p) [String] Key prefix
  -columns (-c) [String[,]] Column groups
  -names (-n) [String[,]] Column names
  -host (-h) [String] Redis host (localhost)
  -port (-p) [Integer] Redis port (6379)
That message will print out the names and aliases of the arguments, type, description and a default value for the parameter if there is one. You can add it to your code with:
<dependency>
  <groupId>com.github.spullara.cli-parser</groupId>
  <artifactId>cli-parser</artifactId>
  <version>1.1</version>
</dependency>
https://github.com/spullara/cli-parser
KeyStore Explorer is a free GUI replacement for the Java command-line utilities keytool and jarsigner.
Official website: http://keystore-explorer.org/
Features:
- Create, load, save and convert between various KeyStore types: JKS, JCEKS, PKCS#12, BKS (V1 and V2) and UBER
 - Change KeyStore and KeyStore entry passwords
 - Delete or rename KeyStore entries
 - Cut/copy/paste KeyStore entries
 - Append certificates to key pair certificate chains
 - Generate RSA, ECC and DSA key pairs with self-signed X.509 certificates
 - Apply X.509 certificate extensions to generated key pairs and Certificate Signing Requests (CSRs)
 - View X.509 Certificate, CRL and CRL entry X.509 V3 extensions
 - Import and export keys and certificates in many formats: PKCS#12, PKCS#8, PKCS#7, DER/PEM X.509 certificate files, Microsoft PVK, SPC, PKI Path, OpenSSL
 - Generate, view and sign CSRs in PKCS #10 and SPKAC formats
 - Sign JAR files
 - Configure a CA Certs KeyStore for use with KeyStore operations
 
https://github.com/kaikramer/keystore-explorer
Library Usage:
- Drop the jar into your lib folder and add to build path.
 - Choose the converter of your choice, they are named DocToPDFConverter, DocxToPDFConverter, PptToPDFConverter, PptxToPDFConverter and OdtToPDFConverter.
 - Instantiate with 4 parameters
- InputStream 
inStream: Document source stream to be converted - OutputStream 
outStream: Document output stream - boolean 
showMessages: Whether to show intermediate processing messages to Standard Out (stdout) - boolean 
closeStreamsWhenComplete: Whether to close input and output streams when complete 
 - InputStream 
 - Call the "convert()" method and wait.
 
Caveats and technical details:
This tool relies on Apache POI, xdocreport, docx4j and odfdom libraries. They are not 100% reliable and the output format may not always be what you desire.
DOC:
Generally ok but takes some time to convert.. I notice that after conversion, the paragraph spacing tends to increase affecting your page layout. Conversion is done using docx4j to convert DOC to DOCX then to PDF.(Cannot use xdocreport once the DOCX data is obtained as the intermediate data structure is docx4j specific.)
DOCX:
Very good results. Fast conversion too. Conversion is done using xdocreport library as it seems faster and more accurate than docx4j.
PPT and PPTX:
Resulting file is a PDF comprising of a PNG embedded in each page. Should be good enough for printing. This is the limitation of the Apache POI and docx4j libraries.
ODT:
Quality and speed as good as DOCX. Conversion is done using odfdom of the Apache ODF Toolkit.
Main Libraries
Apache POI: https://poi.apache.org/
xdocreport: http://code.google.com/p/xdocreport/
docx4j: http://www.docx4java.org/
odfdom: https://incubator.apache.org/odftoolkit/odfdom/
https://github.com/yeokm1/docs-to-pdf-converter
Pdf2Dom is a PDF parser that converts the documents to a HTML DOM representation. The obtained DOM tree may be then serialized to a HTML file or further processed. A command-line utility for converting the PDF documents to HTML is included in the distribution package. Pdf2Dom may be also used as an independent Java library with a standard DOM i…http://cssbox.sourceforge.net/pdf2dom/
Pdf2Dom is based on the Apache PDFBox™ library.
https://github.com/radkovo/Pdf2Dom
About
Generate scaffold with spring boot.
Generate CRUD basic with spring boot.
Scaffold for java web, a clean generate with simple classes.
https://github.com/NetoDevel/cli-spring-boot-scaffold
An annotation based command line parser的更多相关文章
- logoff remote desktop sessions via command line tools
		
This trick I learned from my one of ex-college. In Windows servers, only two remote desktop session ...
 - 15 Examples To Master Linux Command Line History
		
When you are using Linux command line frequently, using the history effectively can be a major produ ...
 - atprogram.exe : Atmel Studio Command Line Interface
		
C:\Program Files\Atmel\Atmel Studio 6.1\atbackend\atprogram.exe No command specified.Atmel Studio Co ...
 - Building QT projects from the command line
		
/************************************************************************ * Building QT projects fro ...
 - [笔记]The Linux command line
		
Notes on The Linux Command Line (by W. E. Shotts Jr.) edited by Gopher 感觉博客园是不是搞了什么CSS在里头--在博客园显示效果挺 ...
 - Linux Command Line learning
		
https://www.codecademy.com/en/courses/learn-the-command-line Background The command line is a text i ...
 - MAC OS 如何安装命令行工具:Command Line Tools
		
打开终端输入:xcode-select --install 回车 安装好了测试结果:gcc -v 显示如下: xcode-select: note: install requested for com ...
 - Xcode 8.X Command Line Tools
		
Summary Step 1. Upgrade Your System to macOS Sierra Step 2. Open the Terminal Application Step 3. Is ...
 - Creating Node.js Command Line Utilities to Improve Your Workflow
		
转自:https://developer.telerik.com/featured/creating-node-js-command-line-utilities-improve-workflow/ ...
 
随机推荐
- ANDROID 中设计模式的采用--结构型模式
			
 结构型模式中的适配器模式.外观模式.装饰模式.代理模式都属于包装模式,都是对另外的类或对象的包装,只是各自的意图不同. 适配器模式通过对另外的类或对象的包装,将其接口转换为用户期望 ...
 - Mybatis源码之RoutingStatementHandler
			
/** * @author Clinton Begin */ public class RoutingStatementHandler implements StatementHandler { pr ...
 - HBase中缓存的优先级
			
ava代码 // Instantiate priority buckets BlockBucket bucketSingle = new BlockBucket(bytesToFree, bloc ...
 - SharePoint 查找字段内部名称的小方法
			
今天逛博客园,偶然看到了下面的文章,介绍不用工具查看SharePoint字段内部名称,也介绍下自己的小方法. http://www.cnblogs.com/sunjunlin/archive/2012 ...
 - 关于最新的APP上架流程
			
苹果官方在2015年05-06月开发者中心进行了改版,网上的APP Store上架大部分都不一样了,自己研究总结一下,一个最新的上架教程以备后用 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一 ...
 - python下实现二叉堆以及堆排序
			
python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...
 - TCP浅谈为什么3次握手
			
<计算机网络>中的例子是这样的,"已失效的连接请求报文段"的产生在这样一种情况:客户发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连 ...
 - cookie的增删改查函数
			
function setCookie(name,value,expires,path,domain){ //设置过期时间 var oDate = new Date(); oDate.setDate(o ...
 - 乐学习知选择--我的J2EE技术历程
			
转眼换工作已经两个多月了,转眼今年已经到9月份了,转眼女朋友也来到了自己身边.有太多的转眼,如今在这个经理不在的早晨,可以肆意的点点这里看看那里,想想自己,有点吉利思的感觉. 这两个多月,知道了什么叫 ...
 - JVM的运行原理以及JDK 7增加的新特性(二)
			
JVM结构 Java编写的代码会按照下图的流程来执行 类装载器装载负责装载编译后的字节码,并加载到运行时数据区(Runtime Data Area),然后执行引擎执行会执行这些字节码. 类加载器(Cl ...