首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Java 8编译Gradle Java项目,但使用Java 11运行测试

使用Java 8编译Gradle Java项目,但使用Java 11运行测试
EN

Stack Overflow用户
提问于 2020-10-12 22:15:15
回答 1查看 862关注 0票数 1

作为项目过渡过程的第一部分,我希望继续使用JDK-8编译器进行编译,但使用JDK-11运行时执行测试。

我的项目是Gradle项目(如果重要的话是6.+),使用java插件或java-library插件。

我找不到一种使用Gradle选项的方法。

我尝试使用JDK-8在一个终端上编译(gradlew build),然后切换到另一个使用JDK11的终端并运行测试(gradlew test),但是它重新编译了代码。

正确的做法是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2020-10-13 07:36:39

您可以使用不同于运行Gradle的JDK来配置所有与Java相关的任务(编译、测试、JavaExec、JavaDoc等)。user guide中有一章给出了如何在Java8中运行Gradle,但在所有任务中都使用Java7的示例。它与Java 11的工作原理相同。

对于您的项目,您可以继续在Java 8中运行Gradle,但添加以下内容以使用不同的版本运行测试:

代码语言:javascript
运行
复制
// Gradle <= 6.6 (Groovy DSL)
tasks.withType(Test) {
    executable = new File("/my/path/to/jdk11/bin/java")
}

用户指南有一个更具可配置性的解决方案,但这是它的要点。

即将发布的Gradle版本6.7的一个很酷的特性是对JVM工具链的支持。现在,您必须自己下载JDK 11发行版并配置它的路径。较新的版本将允许您声明版本,并让Gradle为您下载它(从AdoptOpenJDK),如果缺少:

代码语言:javascript
运行
复制
// 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)
    }
}

最后一个选项是在Java11上运行Gradle,并使用release选项使编译器以Java8为目标:

代码语言:javascript
运行
复制
// Run Gradle with Java 11
compileJava {
    options.release = 8
}
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64319620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档