如何防止 Java 开发者使用新的语言特性?
How to prevent Java developers from using new language features?
由于 Java SE 7 是 EOL,因此有必要升级到 Java 8。然而,出于商业原因不允许开发人员使用任何新的语言功能。特别禁止的功能是 lambdas。
如何强制使用 Java 7 个功能?构建系统基于 Jenkins,还有 SonarQube 可用。
如果您使用eclipse 或idea,您可以将编译器级别设置为1.7,即使您使用jdk8。那么 ide 将错误地显示任何新功能。
确保他们没有使用任何 JDK8 功能和破坏向后兼容性的最佳方法是编译 1.7
的源代码
例如
javac -source 1.7
祝你好运
其他答案部分正确。编译器确实必须配置 -source 1.7 以检查没有使用 Java 8 lang 特性。但它不会阻止使用新的 Java 8 个 API。一个解决方案是使用 animal sniffer 项目来验证是否只使用了 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>
由于 Java SE 7 是 EOL,因此有必要升级到 Java 8。然而,出于商业原因不允许开发人员使用任何新的语言功能。特别禁止的功能是 lambdas。
如何强制使用 Java 7 个功能?构建系统基于 Jenkins,还有 SonarQube 可用。
如果您使用eclipse 或idea,您可以将编译器级别设置为1.7,即使您使用jdk8。那么 ide 将错误地显示任何新功能。
确保他们没有使用任何 JDK8 功能和破坏向后兼容性的最佳方法是编译 1.7
的源代码例如
javac -source 1.7
祝你好运
其他答案部分正确。编译器确实必须配置 -source 1.7 以检查没有使用 Java 8 lang 特性。但它不会阻止使用新的 Java 8 个 API。一个解决方案是使用 animal sniffer 项目来验证是否只使用了 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>