Gradle 8+项目中如何优先编译Groovy代码再编译Kotlin代码?
Gradle 8.5 优先编译Groovy再编译Kotlin的需求与问题
我在使用Gradle 8.5版本的项目中,希望优先编译Groovy代码,再编译Kotlin代码,以此实现自上而下的方式逐步将整个项目从Groovy迁移至Kotlin(例如迁移一个控制器到Kotlin,而底层依赖仍保留为Groovy)。
但当前Kotlin与Groovy插件的任务依赖逻辑存在冲突:
- Kotlin Gradle插件要求自身编译任务在
compileJava之前执行 - Groovy插件要求先执行
compileJava
因此执行compileGroovy时会触发compileKotlin,无法实现先编译Groovy的目标。
TaskTree输出
:compileGroovy \--- :compileJava \--- :compileKotlin \--- :checkKotlinGradlePluginConfigurationErrors
项目使用的插件配置(build.gradle)
plugins { id 'groovy' id 'application' id 'org.jetbrains.kotlin.jvm' version '2.0.0-Beta2' id "com.dorongold.task-tree" version "2.1.1" id 'idea' }
复现步骤
- 在
src/main/groovy目录下放置Groovy类文件(例如Author) - 在
src/main/kotlin目录下放置依赖该Groovy类的Kotlin类文件(例如Book)
补充说明
针对Gradle旧版本的解决方案已失效,例如修改任务依赖的方式会出现compileKotlin的'classpath'属性未知的错误。
内容的提问来源于stack exchange,提问作者dustmachine
相关产品推荐
相关产品推荐

