如何防止 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>