Fork me on GitHub

Usage

Signatures can be used by Animal Sniffer Maven Plugin, Animal Sniffer ANT Tasks or Animal Sniffer Enforcer Rule

With Animal Sniffer Maven Plugin

To check your project against signature using the Animal Sniffer Maven Plugin, include the following configuration in your pom.xml

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>${animal-sniffer-version}</version>
        ...
        <executions>
          ...
          <execution>
            <id>check-signature</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <signature>
                <groupId>org.codehaus.mojo.signature</groupId>
                <artifactId>${signature artifactId}</artifactId>
                <version>${signature version}</version>
              </signature>
            </configuration>
          </execution>
          ...
        <executions>
        ...
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

With Animal Sniffer ANT Tasks

Download the signature from the /${project.versionMaven Central Repository}} and configure the check-signature task to use the signature, e.g.

<project xmlns:as="antlib:org.codehaus.mojo.animal_sniffer">
  <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
    <classpath path="lib/animal-sniffer-ant-tasks-${animal-sniffer-version}.jar"/>
  </typedef>
  <target name="check-signature" depends="compile">
    <as:check-signature signature="${signature artifactId}-${signature version}.signature">
      <path path="classes"/>
    </as:check-signature>
  </target>
</project>

Alternatively, you can use Maven ANT Tasks to download the signatures for you automatically, e.g.

<project xmlns:as="antlib:org.codehaus.mojo.animal_sniffer" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  <!-- define Maven ANT Tasks -->
  <typedef uri="antlib:org.apache.maven.artifact.ant">
    <classpath path="lib/maven-ant-tasks-2.0.10.jar"/>
  </typedef>

  <!-- define Animal Sniffer ANT Tasks -->
  <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
    <classpath path="lib/animal-sniffer-ant-tasks-${animal-sniffer-version}.jar"/>
  </typedef>

  <!-- define local repository location -->
  <condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository">
    <isset property="maven.repo.local"/>
  </condition>

  <!-- configure local repository -->
  <artifact:localRepository id="local.repository" path="${maven.repo.local}"/>

  <!-- declare dependency -->
  <artifact:dependencies filesetId="signatures.fileset">
    <dependency groupId="org.codehaus.mojo.signature" artifactId="${signature artifactId}" version="${signature version}" type="signature"/>
  </artifact:dependencies>

  <target name="check-signature" depends="compile">
    <as:check-signature signature="${org.codehaus.mojo.signature:${signature artifactId}:signature}">
      <path path="classes"/>
    </as:check-signature>
  </target>
</project>

With Animal Sniffer Enforcer Rule Plugin

To check your project against this signature using the Animal Sniffer Enforcer Rule, include the following configuration in your pom.xml

<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0-beta-1</version>
        ...
        <dependencies>
            ...
            <dependency>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>animal-sniffer-enforcer-rule</artifactId>
                <version>${animal-sniffer-version}</version>
            </dependency>
            ...
        </dependencies>
        ...
        <executions>
           ....
          <execution>
            <id>check-signature</id>
            <phase>test</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <checkSignatureRule implementation="org.codehaus.mojo.animal_sniffer.enforcer.CheckSignatureRule">
                  <signature>
                    <groupId>org.codehaus.mojo.signature</groupId>
                    <artifactId>${signature artifactId}</artifactId>
                    <version>${signature version}</version>
                  </signature>
                </checkSignatureRule>
              </rules>
            </configuration>
          </execution>
          ...
        </executions>            
        ...
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>