build.gradle.kts
是 Gradle 构建工具的配置文件,使用 Kotlin DSL(领域特定语言)编写,相比传统的 Groovy DSL,它提供了更好的类型安全性和 IDE 支持。以下是该文件的详细解析:
1. 基本结构
插件配置
kotlin
plugins {
id("java") // 应用 Java 插件
id("org.springframework.boot") version "3.1.0" // 带版本号的插件
}
plugins
块用于声明插件,id()
指定插件 ID,version
可选。- 核心插件(如
java
)可直接使用短名称,第三方插件需指定完整 ID。
项目元数据
kotlin
group = "com.example"
version = "1.0.0"
description = "示例项目"
2. 仓库配置
kotlin
repositories {
mavenCentral() // Maven 中央仓库
google() // Google 仓库(Android 项目常用)
maven {
url = uri("https://jitpack.io") // 自定义 Maven 仓库
}
}
3. 依赖管理
kotlin
dependencies {
implementation("com.google.guava:guava:31.1-jre") // 主代码依赖
testImplementation("junit:junit:4.13.2") // 测试依赖
api("org.apache.commons:commons-lang3:3.12.0") // 暴露依赖给下游模块
}
- 常见配置:
implementation
:内部依赖,不传递。api
:传递依赖。compileOnly
:仅编译时依赖。testImplementation
:测试依赖。
4. 任务定义
自定义任务
kotlin
tasks.register("hello") {
group = "custom"
description = "打印欢迎信息"
doLast {
println("Hello from Kotlin DSL!")
}
}
group
和description
用于组织任务。doLast
定义任务执行时的动作。
修改现有任务
kotlin
tasks.withType<JavaCompile> {
options.encoding = "UTF-8" // 设置编译编码
}
tasks.test {
useJUnitPlatform() // 使用 JUnit 5
}
5. 扩展配置
Java 插件配置
kotlin
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17)) // 指定 JDK 版本
}
withSourcesJar() // 生成源码 JAR
}
Android 配置示例
kotlin
android {
compileSdk = 33
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
}
}
6. 多模块项目
根项目配置
kotlin
// settings.gradle.kts
include(":app", ":library") // 包含子模块
子模块公共配置
kotlin
// 根项目的 build.gradle.kts
subprojects {
apply(plugin = "java")
repositories {
mavenCentral()
}
dependencies {
testImplementation("junit:junit:4.13.2")
}
}
7. 额外属性与变量
kotlin
val springVersion by extra("5.3.9") // 定义变量
dependencies {
implementation("org.springframework:spring-core:$springVersion")
}
8. 脚本插件
kotlin
apply(from = "config.gradle.kts") // 应用外部脚本
9. 类型安全与 IDE 支持
- 类型安全访问器:Kotlin DSL 为插件提供的配置块生成类型安全访问器(如
java
、android
)。 - 自动补全:IDE(如 IntelliJ/Android Studio)支持代码补全和错误提示。
10. 常见问题
注意事项
- 使用双引号包裹字符串。
- 方法调用需加括号(如
mavenCentral()
)。 - 闭包参数需显式声明(如
doLast { ... }
)。
完整示例
kotlin
// build.gradle.kts
plugins {
java
id("org.springframework.boot") version "3.1.0"
}
group = "com.example"
version = "1.0.0"
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.test {
useJUnitPlatform()
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
通过以上结构,可以高效配置项目的构建流程,充分利用 Kotlin 的类型安全和现代语法特性。