Fork me on GitHub

Usage

The plugin offers goals for checking projects against the signatures of an API as well as goals for generating signatures of APIs.

Basic Usage

Checking a project against an API signature

In order to check your project against an API signature, you must configure your pom.xml to reference the signature to check against:

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.23</version>
        ...
        <configuration>
          ...
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java15</artifactId>
            <version>1.0</version>
          </signature>
          ...
        </configuration>
        ...
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

The example above configures the signature for JRE 1.5. For a list of other ready-made signatures, please visit the Animal Scents subproject.

In order to check your project against the signature you have just configured, either invoke the animal-sniffer:check goal directly, e.g.

mvn animal-sniffer:check

or to make the checks part of your build process add an execution to your configuration, e.g.

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.23</version>
        <executions>
          ...
          <execution>
            <id>___id of execution___</id>
            ...
            <phase>test</phase>
            ...
            <goals>
              <goal>check</goal>
            </goals>
            ...
          </execution>
          ...
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

Note: If you are attaching the plugin to your build process, and you want to check against multiple separate APIs (e.g. check against the Tomcat, JBoss, and Jetty servlet containers, or check against multiple Java versions) then you will probably want to move the signature configuration inside each of your multiple executions otherwise your project will be checked against the union of all the signatures specified, which is probably not what you want.

Some more detailed examples of the check goal.

Generating API signatures

To generate the signatures of an API, simply construct a project with the appropriate dependencies exposed by the API and then add an execution of the animal-sniffer:build goal to your project, e.g.

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.23</version>
        <executions>
          ...
          <execution>
            <id>___id of execution___</id>
            ...
            <phase>package</phase>
            ...
            <goals>
              <goal>build</goal>
            </goals>
            ...
          </execution>
          ...
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

For more detailed examples of how to configure this goal see: