2

maven-animal-snifferプラグインは、私のコードにJava 1.6(またはそれ以降)のAPIへの参照があるかどうかを教えてくれることを約束します。これは、MacOSX Snow Leopard(公式の1.6しかありません)で開発しているが、1.5環境に配信する必要がある私たちにとって重要です。

残念ながら、これを使おうとすると、すべてのJavaAPI呼び出しが違反として報告されます。

この問題を経験したのは私だけではありませんが、他の多くの人が成功しているようです。

誰かがこの目的のために機能するPOMスニペットを持っている場合、それは本当に役立つ答えになります。

org.jvnetに戻ったバージョン(1.2)ではなく、central(1.4)で公開されたバージョンを使用しようとしていることに注意してください。

4

2 に答える 2

4

1.4 JVMで実行する必要のあるプロジェクトでは、次の構成を正常に使用しました。

<project>
  ...
  <properties>
    <jdk.level>1.4</jdk.level>
  </properties>
  ...
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.0.2</version>
          <configuration>
            <source>${jdk.level}</source>
            <target>${jdk.level}</target>
          </configuration>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.jvnet</groupId>
        <artifactId>animal-sniffer</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>animal-sniffer</id>
            <phase>compile</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <signature>
                <groupId>org.jvnet.animal-sniffer</groupId>
                <artifactId>java${jdk.level}</artifactId>
                <version>1.0</version>
              </signature>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.jvnet.animal-sniffer</groupId>
            <artifactId>java${jdk.level}</artifactId>
            <version>1.0</version>
            <type>sig</type>
          </dependency>
        </dependencies>
      </plugin>
      ...
    </plugins>
  </build>
</project>
于 2010-01-31T22:57:26.467 に答える
2

さまざまなバージョンのアニマルスニファーと戦い、それに関連する情報をあちこちから収集した後、私はついにそれを使用することができました=)

使用可能な署名とそのMaven座標のリストについては、http://mojo.codehaus.org/signatures/を参照してください。署名への依存関係を宣言する必要はありません。

次の例は、Java 1.5に対する手動(mvn clean compile animal-sniffer:check)チェックの正しい構成を示しています。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>animal-sniffer-maven-plugin</artifactId>
    <version>1.6</version>
    <configuration>
        <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java15</artifactId>
            <version>1.0</version>
        </signature>
    </configuration>
</plugin>

次の例では、署名を手動でチェックできるようにするだけでなく、検証フェーズで動物スニファーチェックの目標を自動的に実行します。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>animal-sniffer-maven-plugin</artifactId>
    <version>1.6</version>
    <configuration>
        <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java15</artifactId>
            <version>1.0</version>
        </signature>
    </configuration>
    <executions>
        <execution>
            <id>animal-sniffer</id>
            <phase>verify</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>
于 2010-12-15T14:40:25.980 に答える