Gradle 8.0升级后Git提交时detekt任务因--jvm-target报错
升级Gradle到8.0版本后,Git提交前的Gradle自动检查无法正常完成——单独运行单项Gradle检查一切正常,但提交时会触发:util:detekt任务失败,错误提示翻译为中文如下:
执行失败: 任务':util:detekt'执行出错。
传递给--jvm-target的无效值(19),必须是以下值之一: [1.6, 1.8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
尝试:
使用--stacktrace选项获取堆栈跟踪。
使用--info或--debug选项获取更多日志输出。
使用--scan选项获取完整分析信息。
已知这是版本适配问题,但找不到修复位置,且代码在其他电脑上可正常运行。以下是针对性解决方法:
升级detekt插件版本:当前使用的detekt版本不支持JVM 19,需升级到支持JVM 19的版本(比如1.23.0及以上)。在项目根目录的
build.gradle或build.gradle.kts中更新插件版本:// Groovy语法示例 plugins { id "io.gitlab.arturbosch.detekt" version "1.23.0" }// Kotlin语法示例 plugins { id("io.gitlab.arturbosch.detekt") version "1.23.0" }统一项目JVM Target版本:如果暂时不想升级detekt,可在项目的
gradle.properties文件中指定项目使用的JVM版本为detekt支持的范围(比如17):org.gradle.java.home=/path/to/your/jdk17 java.version=17 kotlin.jvmTarget=17检查Git提交钩子配置:提交时触发的Gradle任务可能使用了和单独运行时不同的JVM环境。查看项目的pre-commit钩子脚本,确认是否指定了特定的JDK路径或JVM参数,保证和单独运行时的环境一致。
刷新项目依赖与缓存:在本地执行以下命令,清理缓存并同步最新配置:
./gradlew clean build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Franklin84

