Revapi is an API checker for the masses. It makes sure you don't cause headaches to your users when they upgrade to a new version of your stuff.
Java Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
revapi-ant-task Update POMs to use SNAPSHOT versions brought by the API update in Revapi Feb 21, 2017
revapi-build bump self-check versions in build pom. Feb 8, 2017
revapi-java Update the tests to use the latest API. Feb 21, 2017
revapi-reporter-text Update POMs to use SNAPSHOT versions brought by the API update in Revapi Feb 21, 2017
revapi [#34] Add some utility methods to get the configured extension instances Feb 21, 2017
LICENSE Initial import. Generics are not supported, no API checks in place. Nov 11, 2014
README.adoc Fix badge in README. Oct 26, 2016



Build Status Code Coverage Gitter Chat

Revapi is a tool for API analysis and change tracking.

INFO: Revapi requires Java8 update 40 (1.8.0_40) or later to run. Older versions may produce wrong results.


While Revapi is designed to be extensible and in theory should support API checks in other languages than Java (not just programming languages but anything that can be decomposed to a tree structure) the only extension in existence today is the Java API checker.

The main distinguishing features of the Java API checker include:

  • large number of API checks

    • categorized by their influence on source, binary and "semantical" compatibility

  • support for computing the API "surface" by tracking usages of types across the checked library and also its dependencies (ability to report type "leakage" from deps)

  • support for Java8 constructs (default methods in particular)

  • powerful filtering stuff to check and reclassification of found problems

  • ability to filter by annotation presence

  • Maven plugin automatically includes depenendcies in the check

Other features:

  • ability to judge the severity of changes based on semver rules (see here)

  • automatic updates of pom.xml or versions according to semver rules (see here)

  • pluggable reporting (standard output, maven site generation, JUnit report generator (TBD))


This is a maven project, so to build you simply:

mvn install


Revapi can be invoked in a couple of ways. It can be used as a standalone program, as a maven plugin or it can also be embedded in your application and used as a library.


Download the standalone distribution zip and

cd revapi-XXX-standalone

Read the usage info and go.




Revapi revapi = Revapi.builder().withAllExtensionsFromThreadContextClassLoader().build();

AnalysisContext analysisContext = AnalysisContext.builder()


Extending Revapi

See the site for more info.