通过开发 Settings 文件学习编写 Gradle 构建的基础知识。

在本节中,你将

  • 理解 Settings 对象

  • 理解 Settings 文件

  • 理解 Gradle 脚本编写

步骤 0. 开始之前

  1. 你已经在 第 1 部分 中初始化了 Java 应用。

  2. 你已经从 第 2 部分 中理解了 Gradle 构建生命周期。

  3. 你已经在 第 3 部分 中添加了一个子项目和一个独立的构建。

步骤 1. Gradle 脚本

Build 脚本和 settings 文件都是代码。它们使用 Kotlin 或 Groovy 编写。

你可以使用 Kotlin DSLGroovy DSLGradle API 来编写脚本。

在 Gradle 脚本中主要可以使用以下方法

  • Gradle API - 例如来自 Settings APIgetRootProject() 方法

  • 在 DSL 中定义的块 - 例如来自 KotlinSettingsScriptplugins{}

  • 插件定义的扩展 - 例如应用 java 插件时提供的 implementation()api() 方法

步骤 2. Settings 对象

settings 文件是每个 Gradle 构建的入口点。

在初始化阶段,Gradle 会在项目根目录中查找 settings 文件。

当 settings 文件 settings.gradle(.kts) 被找到时,Gradle 会实例化一个 Settings 对象。

Settings 对象的一个目的是允许你声明构建中要包含的所有项目。

你可以直接在 settings 文件中使用 Settings 接口上的任何方法和属性。

例如

includeBuild("some-build")                         // Delegates to Settings.includeBuild()
reportsDir = findProject("/myInternalProject")     // Delegates to Settings.findProject()
includeBuild('some-build')                         // Delegates to Settings.includeBuild()
reportsDir = findProject('/myInternalProject')     // Delegates to Settings.findProject()

步骤 3. Settings 文件

让我们分解一下项目根目录中的 settings 文件

settings.gradle.kts
plugins {                                                                   (1)
    id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0"  (2)
}

rootProject.name = "authoring-tutorial"                                     (3)

include("app")                                                              (4)
include("lib")

includeBuild("gradle/license-plugin")                                       (5)
1 来自 PluginDependenciesSpec APIplugins({}) 方法
2 来自 PluginDependenciesSpec APIid() 方法
3 来自 Settings APIgetRootProject() 方法
4 来自 Settings APIinclude() 方法
5 来自 Settings APIincludeBuild() 方法
settings.gradle
plugins {                                                                   (1)
    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0'   (2)
}

rootProject.name = 'running-tutorial-groovy'                                (3)

include('app')                                                              (4)
include('lib')

includeBuild('gradle/license-plugin')                                       (5)
1 来自 Kotlin DSL 中 KotlinSettingsScriptplugins({}) 方法
2 来自 PluginDependenciesSpec APIid() 方法
3 来自 Settings APIgetRootProject() 方法
4 来自 Settings APIinclude() 方法
5 来自 Settings APIincludeBuild() 方法

下一步: 编写 Build 脚本 >>