Gradle原生支持Scala和Groovy,只需应用对应插件并声明运行时依赖:启用scala插件自动配置编译/测试任务,默认源目录为src/main/scala;启用groovy插件支持Java混合编译,默认源目录为src/main/groovy;两者可共存,依赖统一管理,无需手动配置编译器路径。

Gradle 原生支持 Scala 和 Groovy,只需应用对应插件并声明语言运行时依赖即可,不需要手动配置编译器路径或额外构建逻辑。
应用 Scala 插件并添加运行时依赖
Scala 项目必须启用 scala 插件,它会自动配置编译、测试、打包等任务,并默认使用 src/main/scala 和 src/test/scala 目录。
- 在
build.gradle中声明插件(推荐使用 plugins 块):
plugins {
id 'scala'
}
- 添加 Scala 标准库依赖(版本需与插件兼容,例如 Scala 2.13.x 对应
scala-library:2.13.14):
dependencies {
implementation 'org.scala-lang:scala-library:2.13.14'
testImplementation 'org.scalatest:scalatest_2.13:3.2.18'
}
- 如需自定义编译参数(如警告级别),可配置:
scala {
scalaCompileOptions.additionalParameters = ['-Xlint', '-Ywarn-unused']
}
应用 Groovy 插件并添加运行时依赖
Groovy 插件同样自动处理源码目录(src/main/groovy)、编译和测试流程,并能与 Java 混合编译。
- 启用插件:
plugins {
id 'groovy'
}
- 声明 Groovy 运行时(注意:Groovy 3+ 使用
groovy-all或按模块拆分,推荐groovy+groovy-xml等):
dependencies {
implementation 'org.apache.groovy:groovy:4.0.20'
implementation 'org.apache.groovy:groovy-xml:4.0.20'
testImplementation 'org.spockframework:spock-core:2.4-groovy-4.0'
}
- 若项目含 Java 和 Groovy 混合源码,插件默认支持互通;无需额外设置 sourceSets,除非目录结构非标准。
混合语言项目(Java + Scala 或 Java + Groovy)
Gradle 允许同一项目中同时使用多种 JVM 语言,插件会协同工作:
- Java 插件(
java)可与scala或groovy插件共存; - 源码目录互不干扰:
src/main/java、src/main/scala、src/main/groovy各自独立参与编译; - 依赖统一管理,例如 Java 类可直接调用 Scala object 或 Groovy class,只要它们在 classpath 中;
- 注意:若同时启用
scala和groovy插件,确保它们的 JVM 语言版本兼容(如都基于 JDK 17,且 Scala/Groovy 版本无冲突)。
验证是否生效
执行以下命令检查关键任务是否存在:
-
./gradlew tasks --group compilation—— 应看到compileScala或compileGroovy; -
./gradlew classes—— 成功生成build/classes下对应语言的字节码; -
./gradlew test—— 能正确运行 ScalaTest 或 Spock 测试。


















