编译版本 - eclipse,maven

pst*_*ton 6 java eclipse compiler-construction maven

我最近受到一些代码的攻击,这些代码通过我们的部署周期而不会抛出任何编译错误(我们认为)......

有问题的代码使用的Integer.compare是自Java 1.7以来的新静态方法.

服务器环境在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>
Run Code Online (Sandbox Code Playgroud)

但是,maven构建与问题代码成功运行.

当代码在早期的Jvm中不能正常编译时,我怎么能告诉maven和eclipse失败?

谢谢,保罗.

bma*_*ies 2

使用 Maven 动物嗅探器插件可以在您使用不向后兼容的 API 时告诉您。我还被告知 Java 1.7 有一个此功能,但我个人没有这方面的经验。