我正在研究一个应该与Java 5兼容的Java程序。我对Java 6中允许的实现接口方法进行了@Override
注释,但是在5中没有。我使用的是Java 6 SDK。当我将其设置为5.0合规性时,Eclipse正确地在@Override
上提供了错误消息。但是,我的Maven构建在我的POM中使用以下设置运行时甚至没有警告:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
我是否正确期望这实际上会使构建失败?为什么不呢,有什么我可以做的吗?
答案 0 :(得分:5)
这实际上是一个JDK问题,而不是Maven问题。 @Override注释没有使用-source 1.5标志失败到1.6 javac。继续尝试。令人遗憾的是,让它失败的唯一方法是使用1.5 javac。
对不起,HTH。
修改的
我自己遇到了这个问题,我也想知道它是否真的在看pom中的设置。打开调试输出(-X我相信,不久之前)会将javac命令行打印到标准输出,你会发现它确实使用了-source 1.5参数。
答案 1 :(得分:1)
正如roe的回答所说,你需要使用1.5编译器,因为JDK没有正确地完成它的工作。值得指出的是,您可以通过tweaking the maven-compiler-plugin配置避免使用路径等来使用特定的编译器:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_1_5_HOME}/bin/javac</executable>
<compilerVersion>1.5</compilerVersion>
</configuration>
</plugin>
...
</plugins>
然后,您可以在项目或settings.xml中指定编译器的路径
<properties>
<JAVA_1_5_HOME>/path/to/1.5jdk</JAVA_1_5_HOME>
</properties>