Skip to content

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!")
    }
}
  • groupdescription 用于组织任务。
  • 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 为插件提供的配置块生成类型安全访问器(如 javaandroid)。
  • 自动补全:IDE(如 IntelliJ/Android Studio)支持代码补全和错误提示。

10. 常见问题

注意事项

  1. 使用双引号包裹字符串。
  2. 方法调用需加括号(如 mavenCentral())。
  3. 闭包参数需显式声明(如 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 的类型安全和现代语法特性。