This module contains the API of Revapi as well as the main class that is used to instantiate, configure and run the API analysis. It also contains a couple of simplistic implementations of the Revapi interfaces to get you started with.
In here we’re only going to deal with the invocation of the API analysis using the Java API when Revapi is used as a library.
First of all, we need to determine what archives we are going to compare. For that Revapi uses the API class:
API oldApi = API.of(myArchiveV1).supportedBy(v1Dependencies).build();
API oldApi = API.of(myArchiveV2).supportedBy(v2Dependencies).build();
myArchiveV1 and others in the example above are implementations of the
archive interface. Revapi API provides a single simple
implementation - FileArchive which represents a file
as a Revapi archive - quite a useful and fitting thing. There are other implementations, too, though - for example
the maven plugin has an implementation of this, too, which wraps a maven archive in a revapi archive and provides
the maven archive’s GAV as the revapi archive’s name - quite a useful thing when reporting on what problems were found
in which archive.
Configuration is supplied using JBoss DMR which should in theory support loading the configuration from various formats if enough effort is done on the user’s side. Revapi as such has so far been extensively tested only with JSON and XML data. Even if data was translated into DMR from another format than JSON, the validation of that data will always be done against a JSON schema that is provided by the extensions.
Since Revapi 0.11.0 (supported by Maven plugin 0.11.0, Ant Task 0.9.0 and CLI 0.9.0), Revapi can be configured to include or exclude extensions even if they are available on the classpath. More importantly, the pipeline configuration enables the users to group difference transforms into blocks using which one can overcome the transforms influencing each other. For more details, see the configuration page.