The command line tool has the following options:
SYNOPSIS
java -jar japicmp.jar [-a <accessModifier>] [(-b | --only-incompatible)]
[(-e <excludes> | --exclude <excludes>)] [--exclude-exclusively]
[(-h | --help)] [--html-file <pathToHtmlOutputFile>]
[--html-stylesheet <pathToHtmlStylesheet>]
[(-i <includes> | --include <includes>)] [--ignore-missing-classes]
[--ignore-missing-classes-by-regex <ignoreMissingClassesByRegEx>...]
[--include-exclusively] [--include-synthetic] [(-m | --only-modified)]
[(-n <pathToNewVersionJar> | --new <pathToNewVersionJar>)]
[--new-classpath <newClassPath>] [--no-annotations]
[(-o <pathToOldVersionJar> | --old <pathToOldVersionJar>)]
[--old-classpath <oldClassPath>]
[--report-only-filename] [--report-only-summary]
[(-s | --semantic-versioning)]
[--markdown]
[(-x <pathToXmlOutputFile> | --xml-file <pathToXmlOutputFile>)]
[--error-on-binary-incompatibility]
[--error-on-source-incompatibility]
[--error-on-modifications]
[--no-error-on-exclusion-incompatibility]
[--error-on-semantic-incompatibility]
[--ignore-missing-old-version] [--ignore-missing-new-version]
OPTIONS
-a <accessModifier>
Sets the access modifier level (public, package, protected,
private), which should be used.
-b, --only-incompatible
Outputs only classes/methods that are binary incompatible. If not
given, all classes and methods are printed.
-e <excludes>, --exclude <excludes>
Semicolon separated list of elements to exclude in the form
package.Class#classMember, * can be used as wildcard. Annotations
are given as FQN starting with @. Examples:
mypackage;my.Class;other.Class#method(int,long);foo.Class#field;@my.Annotation.
--exclude-exclusively
Exclude only packages specified in the "exclude" option, include
their sub-packages
-h, --help
Display help information
--html-file <pathToHtmlOutputFile>
Provides the path to the html output file.
--html-stylesheet <pathToHtmlStylesheet>
Provides the path to your own stylesheet.
-i <includes>, --include <includes>
Semicolon separated list of elements to include in the form
package.Class#classMember, * can be used as wildcard. Annotations
are given as FQN starting with @. Examples:
mypackage;my.Class;other.Class#method(int,long);foo.Class#field;@my.Annotation.
--ignore-missing-classes
Ignores all superclasses/interfaces missing on the classpath.
--ignore-missing-classes-by-regex <ignoreMissingClassesByRegEx>
Ignores only those superclasses/interface missing on the classpath
that are selected by a regular expression.
--include-exclusively
Include only packages specified in the "include" option, exclude
their sub-packages
--include-synthetic
Include synthetic classes and class members that are hidden per
default.
-m, --only-modified
Outputs only modified classes/methods.
-n <pathToNewVersionJar>, --new <pathToNewVersionJar>
Provides the path to the new version(s) of the jar(s). Use ; to
separate jar files.
--new-classpath <newClassPath>
The classpath for the new version.
--no-annotations
Do not evaluate annotations.
-o <pathToOldVersionJar>, --old <pathToOldVersionJar>
Provides the path to the old version(s) of the jar(s). Use ; to
separate jar files.
--old-classpath <oldClassPath>
The classpath for the old version.
--report-only-filename
Reports just filenames (not full paths) in report description.
--report-only-summary
Reports only a breakdown of classes and their status
when generating plain text or html reports.
-s, --semantic-versioning
Tells you which part of the version to increment.
--markdown
Generates output in Markdown format.
-x <pathToXmlOutputFile>, --xml-file <pathToXmlOutputFile>
Provides the path to the xml output file.
--error-on-binary-incompatibility
Exit with an error if a binary incompatibility is detected.
--error-on-source-incompatibility
Exit with an error if a source incompatibility is detected.
--error-on-modifications
Exit with an error if any change between versions is detected.
--no-error-on-exclusion-incompatibility
Ignore incompatible changes caused by an excluded class
(e.g. excluded interface removed from not excluded class) when
deciding whether to exit with an error.
--error-on-semantic-incompatibility
Exit with an error if the binary compatibility changes are
inconsistent with Semantic Versioning. This expects versions of
the form Major.Minor.Patch (e.g. 1.2.3 or 1.2.3-SNAPSHOT).
See http://semver.org/spec/v2.0.0.html for more information about
Semantic Versioning.
--ignore-missing-old-version
When --error-on-semantic-incompatibility is passed, ignore
non-resolvable artifacts for the old version.
--ignore-missing-new-version
When --error-on-semantic-incompatibility is passed, ignore
non-resolvable artifacts for the new version.
When your library implements interfaces or extends classes from other libraries than the JDK and you want to evaluate binary compatibility you must specify the classpath for the two different versions:
java -jar japicmp-0.23.0-jar-with-dependencies.jar -n new-version.jar -o old-version.jar --new-classpath other-library-v2.jar
--old-classpath other-library-v1.jar
In case the classpath for both versions did not change, you can add the library using the standard way:
java -cp japicmp-0.23.0-jar-with-dependencies.jar;otherLibrary.jar japicmp.JApiCmp -n new-version.jar -o old-version.jar
For reporting purposes you can also provide more than one jar as old or new version(s):
java -jar japicmp-0.23.0-jar-with-dependencies.jar -o lib1-old.jar;lib2-old.jar -n lib1-new.jar;lib2-new.jar