有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

有人要用动物嗅探器吗?

maven animal sniffer插件承诺告诉我我的代码是否引用了Java1.6(或更新版本)API。这对于我们这些在MacOSX Snow Leopard(只有官方的1.6版)上开发但需要提供1.5版环境的人来说非常重要

不幸的是,当我尝试使用它时,我得到了所有Java API调用的违规报告

我不是唯一一个遇到这个问题的人,但显然还有很多人成功了

如果有人有一个可用于此目的的POM代码段,这将是一个非常有用的答案

请注意,我试图使用central上发布的版本(1.4),而不是org上的版本(1.2)。jvnet


共 (2) 个答案

  1. # 1 楼答案

    我已经成功地将以下配置用于一个必须使用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>
    
  2. # 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>