gpt4 book ai didi

java - 使用Java 8编译Gradle Java项目但使用Java 11运行测试

转载 作者:行者123 更新时间:2023-12-03 05:03:05 28 4
gpt4 key购买 nike

作为项目过渡过程的第一部分,我想继续使用JDK-8编译器进行编译,但是要使用JDK-11运行时执行测试。
我的项目是使用java插件或java-library插件的Gradle项目(如果需要的话,为6. +)。
我找不到使用Gradle选项执行此操作的方法。
我尝试使用JDK-8在一个终端中编译(gradlew build),然后使用JDK 11切换到另一个终端并运行测试(gradlew test),但是它重新编译了代码。
正确的方法是什么?

最佳答案

您可以使用不同于用于运行Gradle的JDK配置所有与Java相关的任务(编译,测试,JavaExec,JavaDoc等)。 user guide中有一章提供了一个示例,该示例说明了如何使用Java 8运行Gradle但如何在所有任务中使用Java 7。它与Java 11相同。
对于您的项目,您可以继续使用Java 8运行Gradle,但添加以下内容以运行具有不同版本的测试:

// Gradle <= 6.6 (Groovy DSL)
tasks.withType(Test) {
executable = new File("/my/path/to/jdk11/bin/java")
}
用户指南具有更可配置的解决方案,但这是其要旨。
即将发布的6.7版Gradle的一项很酷的功能是对JVM工具链的支持。现在,您必须自己下载JDK 11发行版并配置其路径。较新的版本将允许您声明版本,并在缺少时让Gradle(从AdoptOpenJDK)为您下载版本:
// Gradle >= 6.7 (Groovy DSL)
// Unreleased at the time of this writing and the syntax is therefore subject to change
test {
javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(11)
}
}
最后一个选择是使用Java 11运行Gradle,并使用 release选项使编译器以Java 8为目标:
// Run Gradle with Java 11
compileJava {
options.release = 8
}

关于java - 使用Java 8编译Gradle Java项目但使用Java 11运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64319620/

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