https://github.com/revapi/revapi
Revapi is an API analysis and change tracking tool written in Java. Its focus is mainly on Java language itself but it has been specifically designed to not be limited to just Java. API is much more than just java classes - also various configuration files, schemas, etc. can contribute to it and users can become reliant on them.
https://github.com/revapi/revapi
api api-analyzer compatibility java maven-plugin revapi
Last synced: 1 day ago
JSON representation
Revapi is an API analysis and change tracking tool written in Java. Its focus is mainly on Java language itself but it has been specifically designed to not be limited to just Java. API is much more than just java classes - also various configuration files, schemas, etc. can contribute to it and users can become reliant on them.
- Host: GitHub
- URL: https://github.com/revapi/revapi
- Owner: revapi
- License: apache-2.0
- Created: 2014-11-11T13:50:08.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2025-11-08T15:12:37.000Z (8 months ago)
- Last Synced: 2026-02-24T17:30:59.884Z (4 months ago)
- Topics: api, api-analyzer, compatibility, java, maven-plugin, revapi
- Language: Java
- Homepage: http://revapi.org
- Size: 7.04 MB
- Stars: 212
- Watchers: 8
- Forks: 51
- Open Issues: 40
-
Metadata Files:
- Readme: README.adoc
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
= Revapi
:toc:
image:https://github.com/revapi/revapi/actions/workflows/build.yml/badge.svg[Build Status, link=https://github.com/revapi/revapi/actions/workflows/build.yml]
image:https://codecov.io/github/revapi/revapi/coverage.svg?branch=main[Code Coverage,link=https://codecov.io/github/revapi/revapi?branch=main]
https://revapi.org[Revapi] is a tool for API analysis and change tracking.
== Summary
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 https://revapi.org/revapi-java/differences.html[API checks]
** categorized by their influence on source, binary and "semantic" 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)
* powerful filtering of elements to check and reclassification of found problems
* ability to filter by annotation presence
* Maven plugin automatically includes dependencies in the check
Other features:
* ability to judge the severity of changes based on semver rules (see
https://revapi.org/revapi-basic-features/versions.html[here])
* automatic updates of pom.xml or release.properties versions according to semver rules (see
https://revapi.org/revapi-maven-plugin/specifying-versions.html[here])
* pluggable reporting (standard output, maven site generation, https://revapi.org/revapi-reporter-text/index.html[FreeMarker templates], https://revapi.org/revapi-reporter-json/index.html[JSON], ...)
== Building
This is a maven project, so to build you simply:
mvn install
== Usage
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.
=== Standalone
https://revapi.org/revapi-site/downloads.html[Download] the standalone distribution zip and
unzip revapi-XXX-standalone.zip
cd revapi-XXX-standalone
./revapi.sh
Read the usage info and go.
=== Maven
[source,xml]
----
org.revapi
revapi-maven-plugin
...
org.revapi
revapi-java
...
com.acme
my-extension
...
...
...
api-check
check
...
...
...
...
----
=== Gradle
The Gradle plugin available for Revapi at https://plugins.gradle.org/plugin/org.revapi.revapi-gradle-plugin
and it is maintained under https://github.com/revapi/gradle-revapi
[source,kotlin]
----
buildscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("org.revapi:gradle-revapi:x.y.z")
}
}
apply(plugin = "org.revapi.revapi-gradle-plugin")
----
=== Embedding
[source,java]
----
Revapi revapi = Revapi.builder().withAllExtensionsFromThreadContextClassLoader().build();
AnalysisContext analysisContext = AnalysisContext.builder()
.withOldAPI(API.of(...))
.withNewAPI(API.of(...))
.withConfigurationFromJSON("json").build();
revapi.analyze(analysisContext);
----
== Extending Revapi
See the https://revapi.org/revapi/architecture.html[site] for more info.
== Getting in touch
Mastodon:: https://botsin.space/@revapi[+@revapi@botsin.space+]
Twitter:: https://twitter.com/revapi_org[@revapi_org]
Matrix:: #revapiorg:matrix.org
Mailing list:: https://groups.google.com/forum/#!forum/revapi[revapi@googlegroups.com]
Issues:: https://github.com/revapi/revapi/issues
Code:: https://github.com/revapi/