This is a specialized version of the Clirr Maven Plugin. It adds capabilities for excluding specific error types, as well as separating code into three, rather than two, subgroups: Internal code (no checks) Externally invoked code (Annotated with an "externally invoked" annotation, same as Externally implemented, but adding methods to interfaces and abstract classes is allowed) Externally implemented code (Assumed default. Full backwards compatibility required *unless* an interface is annotated with a defined adaptor annotation, in which case full backwards compatibility is required for the adaptor class, but the rules of @ExternallyInvoked apply to the interface itself) Clirr is a tool that checks Java libraries for binary and source compatibility with older releases. Basically you give it two sets of jar files and Clirr dumps out a list of changes in the public API. The clirr-maven-plugin can be configured to break the build, if it detects incompatible api changes. In a continuous integration process, the clirr-maven-plugin can automatically prevent accidental introduction of binary or source compatibility problems. Additionally, the plugin can generate a report as part of the generated site.