Animal Sniffer Maven插件无法检测到泛型添加

时间:2014-05-22 18:23:56

标签: java maven generics animal-sniffer

Maven Animal Sniffer插件非常适合检测Java API签名更改,除非更改只是添加泛型类型。例如,在Java 6中,您有JList,但在Java 7中,您有JList<E>。如果我使用泛型类型参数,它将无法使用JDK 6进行编译,但Animal Sniffer不会检测到它。如果我在我的dev env中使用JDK 7编译,我将不会意识到我已经破坏了构建,直到我提交代码并且有人使用JDK 6尝试构建它。

应该使嗅探失败的示例Java代码以及我的Maven配置的相关部分如下所示。帮助我防止这场悲剧。 :) 我可以改变一些东西,以便Animal Sniffer按预期失败构建吗?

Example.java

import javax.swing.JList;

public class Example {
  // Only compiles with JDK 1.7+
  private final JList<String> aList = new JList<String>();
}

Maven构建配置

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <!-- Make sure we generate the correct Java byte code. -->
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>animal-sniffer-maven-plugin</artifactId>
            <version>1.11</version>
            <configuration>
                <!-- Make sure we don't use incompatible Java APIs. -->
                <signature>
                    <groupId>org.codehaus.mojo.signature</groupId>
                    <!-- See http://mojo.codehaus.org/signatures/ -->
                    <artifactId>java16</artifactId>
                    <version>1.1</version>
                </signature>
            </configuration>
            <executions>
                <execution>
                    <id>sniff-jdk</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <phase>compile</phase>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
</build>

0 个答案:

没有答案