Jar Jar Links - A utility to repackage and embed Java libraries
Copyright 2007 Google Inc.

Command-line usage:

  java -jar jarjar.jar [help]

    Prints this help message.

  java -jar jarjar.jar strings <cp>

    Dumps all string literals in classpath <cp>. Line numbers will be
    included if the classes have debug information.

  java -jar jarjar.jar find <level> <cp1> [<cp2>]

    Prints dependencies on classpath <cp2> in classpath <cp1>. If <cp2>
    is omitted, <cp1> is used for both arguments.

    The level argument must be "class" or "jar". The former prints
    dependencies between individual classes, while the latter only
    prints jar->jar dependencies. A "jar" in this context is actually
    any classpath component, which can be a jar file, a zip file, or a
    parent directory (see below).

  java -jar jarjar.jar process <rulesFile> <inJar> <outJar>

    Transform the <inJar> jar file, writing a new jar file to <outJar>.
    Any existing file named by <outJar> will be deleted.

    The transformation is defined by a set of rules in the file specified
    by the rules argument (see below).

Classpath format:

  The classpath argument is a colon or semi-colon delimited set
  (depending on platform) of directories, jar files, or zip files. See
  the following page for more details:
  http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/classpath.html
  
  Mustang-style wildcards are also supported:
  http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6268383

Rules file format:

  The rules file is a text file, one rule per line. Leading and trailing
  whitespace is ignored. There are three types of rules:

    rule <pattern> <result>
    zap <pattern>
    keep <pattern>

  The standard rule ("rule") is used to rename classes. All references
  to the renamed classes will also be updated. If a class name is
  matched by more than one rule, only the first one will apply.

  <pattern> is a class name with optional wildcards. "**" will
  match against any valid class name substring. To match a single
  package component (by excluding "." from the match), a single "*" may
  be used instead.

  <result> is a class name which can optionally reference the
  substrings matched by the wildcards. A numbered reference is available
  for every "*" or "**" in the <pattern>, starting from left to
  right: "@1", "@2", etc. A special "@0" reference contains the entire
  matched class name.

  The "zap" rule causes any matched class to be removed from the resulting
  jar file. All zap rules are processed before renaming rules.

  The "keep" rule marks all matched classes as "roots". If any keep
  rules are defined all classes which are not reachable from the roots
  via dependency analysis are discarded when writing the output
  jar. This is the last step in the process, after renaming and zapping.

