我有一个应用以下配置的 gradle 项目:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
vendor = JvmVendorSpec.AMAZON
}
}
在同一个项目中,我有一个任务负责编译一些 C++ 代码,并且该 C++ 代码依赖于一些 JDK 头文件和库。我想获取已解析工具链的安装目录(JAVA_HOME),以便我可以将其提供给 C++ 编译器,确保使用相同的 JDK 来编译 java 组件和本机组件。
有什么办法可以做到这一点吗?我查看了 JavaToolchainSpec ,但似乎该规范并未被评估为 JavaCompiler ,直到它实际在 java 插件定义的特定任务中使用。不幸的是,需要它的本机编译任务只是一个标准的
exec
任务。
我使用的是 gradle 8.2 版本
在文档中,您可以找到如何在任务中获取JAVA_HOME
def launcher = javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(11))
}
tasks.named('anotherSampleTask') {
javaHome = launcher.map { it.metadata.installationPath }
}