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/ ...
随机推荐
- saiku应用的调试
ubuntu下解压saiku包后使用: 运行.sh命令(.bat是windows命令).运行时注意权限.可以先chmod a+x *.sh 提示,catali?.sh出错. 这是tomcat的一个文件 ...
- ERP-非财务人员的财务培训教(二)------如何评价公司/部门经营业绩
一.财务比率分析 第一节 流动性比率 第二节 经营比率 第三节 资本结构比率 第四节 获利能力比率 第五节 现金流量比率 第六节 获现能力比率 二.财务比率金字塔 第二部分 如何评价公 ...
- 新版MATERIAL DESIGN 官方动效指南(一)
Google 刚发布了新版Material Design 官方动效指南,全文包括三个部分:为什么说动效很重要?如何制作优秀的Material Design动效及转场动画,动效的意义.新鲜热辣收好不谢! ...
- C++模板总结
在编写含有模板的程序的时候,我还是按照一个头文件声明,一个源文件的方法来组织,结果编译的时候总出现一些很奇怪的语法问题,但程序明明是没有问题的.后来经过查阅才知道原来是因为C++编译器不支持对模板的分 ...
- rails应用ajax之一:使用纯js方法
考虑如下需求: 1. 用户输入一个用户名,当焦点跳出文本框时,检查该用户名是否有效 2. 动态更新检查的结果 我们使用ajax的方式来实现这个简单的功能,首先建立view:check.html.erb ...
- React Native入门 认识Flexbox布局
Flexbox布局是由W3C在09年提出的在Web端取代CSS盒子模型的一种布局方式. ReactNative实现了Flexbox布局的大部分功能. Flexbox布局所使用的属性,基本可以分为两大类 ...
- Mac 下安装安卓 apk 文件
Mac 下安装安卓 apk 文件 在windows上有比较多的第三方软件可以使用,双击就可以将apk文件安装到手机上. 在Mac 上要实现这样还是挺难得,目前还没有像Windows那样的第三方软件可以 ...
- Java的运行原理
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器.这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口.编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由 ...
- Django1.8文档阅读手记
主要集中在新特性上. Django1.8好像开始推荐使用python3 Django的QuerySet是延迟加载的,这个文档里面一般会明言,通过Connection SQL显示测试,外键对象也是延迟加 ...
- Socket.io文字直播聊天室的简单代码
直接上代码吧,被注释掉的主要是调试代码,和技术选型的测试代码 var app = require('express')(); var server = require('http').Server(a ...