maven-animal-sniffer插件有望告诉我我的代码是否有对Java 1.6(或更新)API的任何引用。这对于我们这些在MacOSX Snow Leopard上开发的人来说很重要(它只有官方的1.6),但需要提供1.5个环境。
可悲的是,在尝试使用它时,我将所有Java API调用报告为违规。
我不是唯一一个遇到这个问题的人,但显然很多其他人都成功了。
如果某人有一个工作POM片段用于此目的,那将是一个非常有用的答案。
请注意,我正在尝试使用中央(1.4)上发布的版本而不是org.jvnet上的那个(1.2)。
答案 0 :(得分: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>
答案 1 :(得分: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>