如何防止Java开发人员使用新的语言功能?

时间:2015-06-23 06:56:23

标签: java jenkins sonarqube

由于Java SE 7是EOL,因此需要升级到Java 8。但是,有商业原因不允许开发人员使用任何新的语言功能。特别禁止的特征是lambdas。

如何强制使用Java 7功能?构建系统基于Jenkins,并且还提供SonarQube。

3 个答案:

答案 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会错误地输出任何新功能。