2

maven-animal-sniffer 插件承诺告诉我我的代码是否引用了 Java 1.6(或更新的)API。这对于我们这些在 MacOSX Snow Leopard(只有官方 1.6)上开发但需要交付到 1.5 环境的人来说很重要。

可悲的是,在尝试使用它时,我将所有 Java API 调用都报告为违规。

我不是唯一遇到这个问题的人,但显然很多其他人都成功了。

如果有人为此目的提供了一个有效的 POM 片段,那将是一个非常有用的答案。

请注意,我正在尝试使用在中央 (1.4) 上发布的版本,而不是在 org.jvnet 上发布的版本 (1.2)。

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 回答