gpt4 book ai didi

java - 如何使用 gradle 强制执行 java 编译器版本?

转载 作者:太空狗 更新时间:2023-10-29 22:51:23 26 4
gpt4 key购买 nike

在我的所有项目中,我都使用 gradle 并指定以下内容:

sourceCompatibility = "1.7"; // for example
targetCompatibility = "1.7"; // defaults to sourceCompatibility

现在,我安装了三个不同版本的 JDK,从 1.6 到 1.8。为了从一个版本切换到另一个版本,我 source shell 文件来更改 PATHJAVA_HOME 甚至 JDK_HOME .

我可能会意外地使用错误的 JDK 版本,而我不希望这样...是否有可能在尝试任何编译任务之前检查编译器版本是否等于 targetCompatibility?

最佳答案

self 回答,感谢@JBNizet提供初步解决方案...

解决方案确实是使用JavaVersion ,而且 sourceCompatibilitytargetCompatibility 都接受 JavaVersion 作为参数...

因此构建文件变成了这样:

def javaVersion = JavaVersion.VERSION_1_7;
sourceCompatibility = javaVersion;
targetCompatibility = javaVersion; // defaults to sourceCompatibility

然后是任务:

task enforceVersion << {
def foundVersion = JavaVersion.current();
if (foundVersion != javaVersion)
throw new IllegalStateException("Wrong Java version; required is "
+ javaVersion + ", but found " + foundVersion);
}

compileJava.dependsOn(enforceVersion);

它有效:

$ ./gradlew clean compileJava
:clean UP-TO-DATE
:enforceVersion FAILED

FAILURE: Build failed with an exception.

* Where:
Build file '/home/fge/src/perso/grappa-tracer-backport/build.gradle' line: 55

* What went wrong:
Execution failed for task ':enforceVersion'.
> Wrong Java version; required is 1.7, but found 1.8

关于java - 如何使用 gradle 强制执行 java 编译器版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com