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

  • 相关阅读:
    最小路径
    零钱兑换
    硬币
    三步问题
    区域和检索
    除数博弈
    URI和URL的辨别
    交叉编译OpenMP
    牛客挑战赛44D-数列的和
    CF1408H. Rainbow Triples
  • 原文地址:https://www.cnblogs.com/softidea/p/8993281.html
Copyright © 2011-2022 走看看