编译一个版本 - eclipse、maven

问题描述 投票:0回答:2

我最近被一些代码刺痛了,这些代码在我们的部署周期中没有抛出任何编译错误(我们认为)...

有问题的代码正在使用新的静态方法

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>

然而,maven 构建成功运行,但有问题代码。

当代码无法在比它正在编译的更早的 JVM 中运行时,我如何告诉 maven 和 eclipse 都失败?

谢谢,保罗。

java eclipse maven
2个回答
2
投票

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


2
投票

在开发环境中安装java 1.6,然后在eclipse中右键单击项目,进入Properties->Java Build Path。 转到“库”选项卡并删除 java 1.7 JRE,然后添加 java 1.6 JRE。

我对maven不够熟悉,无法回答那一半。

© www.soinside.com 2019 - 2024. All rights reserved.