由于Java SE 7是EOL,因此需要升级到Java 8。但是,有商业原因不允许开发人员使用任何新的语言功能。特别禁止的特征是lambdas。
如何强制使用Java 7功能?构建系统基于Jenkins,并且还提供SonarQube。
答案 0 :(得分:4)
其他答案部分正确。必须使用-source 1.7配置编译器以检查是否使用了Java 8 lang功能。但它并不妨碍使用新的Java 8 API。解决方案是使用动物嗅探器项目来验证是否仅使用Java 7 API。
以下是maven项目的配置示例:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<executions>
<execution>
<id>enforce-java-api-compatibility</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature
</groupId>
<artifactId>java17</artifactId>
<version>1.0</version>
</signature>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
答案 1 :(得分:2)
确保他们没有使用任何JDK 8功能和破坏向后兼容性的最佳方法是编译1.7的源代码
例如
javac -source 1.7
祝你好运
答案 2 :(得分:0)
如果使用eclipse或idea,即使使用jdk8,也可以将编译器级别设置为1.7。那么ide会错误地输出任何新功能。