You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gradle命令行获取项目build.gradle中的Java targetCompatibility

获取Gradle项目中配置的Java编译版本

问题原因

你之前用./gradlew properties拿到的是默认值,是因为这个命令输出的是项目根属性和插件扩展属性,而你的配置是直接写在JavaCompile任务实例里的,不属于这些范畴,所以无法被该命令识别。

两种解决方案

方案1:调整配置到Java插件扩展(推荐)

如果你的项目使用了Java插件,建议把兼容性配置移到java扩展块中,这样properties命令就能直接读取到正确的值:

java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

此时执行以下命令即可获取版本:

./gradlew properties | grep -E "sourceCompatibility|targetCompatibility"

输出会直接显示你设置的21版本,CI中可以用文本提取工具(如awk)取出具体数值。

方案2:自定义Gradle任务读取任务配置

如果不想调整现有配置,可以添加一个自定义任务来读取JavaCompile任务中的配置:
在build.gradle.kts中添加:

tasks.register("getJavaCompileVersion") {
    doLast {
        val compileTask = tasks.withType<JavaCompile>().firstOrNull()
        compileTask?.run {
            println(sourceCompatibility)
        } ?: error("No JavaCompile task found in the project")
    }
}

然后在CI中执行:

JAVA_VERSION=$(./gradlew getJavaCompileVersion --quiet)

--quiet参数会过滤掉Gradle的日志输出,只保留你需要的版本号,方便直接赋值给环境变量。

内容的提问来源于stack exchange,提问作者Julian Suarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:27:08