我最近被一些代码刺痛了,这些代码使它在我们的部署周期中没有抛出任何编译错误(我们认为)......
有问题的代码正在使用自 Java 1.7 以来的新静态方法 Integer.compare
。
服务器环境运行在Java 1.6上。虽然我们的开发环境安装了 Java 1.7。
我们的假设是,将项目首选项设置为 JavaSE-1.6 合规性至少会给我们提供有关代码的编译警告,但是在 eclipse 中看不到任何警告或错误。
项目 > 属性 > java 编译器 > JDK 合规性 > 在 java 构建路径上使用来自执行环境“JavaSE-1.6”的合规性
其次,我们使用 maven 编译最终部署。 pom 明确指示符合 1.6 编译器:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<optimize>true</optimize>
</configuration>
</plugin>
然而,maven 构建成功运行并出现问题代码。
当代码在比它正在编译的版本更早的 Jvm 中无法运行时,我如何告诉 maven 和 eclipse 都失败?
谢谢,保罗。
最佳答案
当您使用不向后兼容的 API 时,使用 Maven 动物嗅探器插件来告诉您。我还被告知 Java 1.7 具有此功能,但我个人没有这方面的经验。
关于java - 编译一个版本 - eclipse,maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763888/