zoukankan      html  css  js  c++  java
  • 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.




    Java port of Python's famous argparse command-line argument parser. https://argparse4j.github.io/

    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/argparse4j/argparse4j

    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

    Mirror of Apache Commons CLI

    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:

    1. Drop the jar into your lib folder and add to build path.
    2. Choose the converter of your choice, they are named DocToPDFConverter, DocxToPDFConverter, PptToPDFConverter, PptxToPDFConverter and OdtToPDFConverter.
    3. 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
    4. 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

  • 相关阅读:
    Python之路第一课Day1--随堂笔记
    前端面试题汇总
    全国计算机二级python备考
    小程序体检评分优化
    自己配置webpack报错总结
    npm install 报错npm WARN tar ENOENT: no such file or directory和npm ERR! cb() never called!可能的原因
    vue 里面使用sass进行代码复用mixin简单用法
    用openlayers初始化地图碰到过的 地图不显示的问题 VUE
    element el-table表格树状图全选/取消 子节点无法选中问题
    element 树形结构自定义节点图标
  • 原文地址:https://www.cnblogs.com/softidea/p/8993281.html
Copyright © 2011-2022 走看看