java - 如何防止 Java 开发人员使用新的语言特性?

标签 java jenkins sonarqube

因为 Java SE 7 是 EOL , 升级到 Java 8 是必要的。然而,出于商业原因不允许开发人员使用任何新的语言功能。特别禁止使用的功能是 lambda。

如何强制使用 Java 7 功能?构建系统基于 Jenkins,还有 SonarQube 可用。

最佳答案

其他答案部分正确。编译器确实必须配置 -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>

关于java - 如何防止 Java 开发人员使用新的语言特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995833/

相关文章:

java - Android 中防止刷新 webview

java - 从 Tomcat 应用程序中不同监听器之间的上下文获取属性

Hudson - 从奴隶捕获日志

java - 避免重复文字 Sonar 错误

python - 适用于 python 的 Sonar 库 : Test success score not being discovered - The resource for 'tests.test_transformation_helper.TestCase' is not found

sonarqube - StartSonar 包装器停止错误

java - 我可以在服务器端添加一个新字段来响应,并且旧客户端不会因 jackson 反序列化而中断吗?

java - 如何打印自己实现的堆栈?

docker - 运行单元测试 karma 脚本后 Jenkins 管道不会停止

api - 如何使用远程访问 API 获取 jenkins 的系统配置