Gradle

最后更新: 2022-01-21 14:04:37 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

Gradle 是用于 JVM 项目和许多其他生态系统的构建自动化工具。 构建逻辑使用 Groovy DSL(.gradle)或 Kotlin DSL (.gradle.kts)编写。Gradle 本身运行在 JVM 上。

项目文件 #

在仓库根目录中,重要文件包括:

  • settings.gradle[.kts] 定义构建并包含子项目。 多项目构建必须包含此文件,也可以使用它设置根项目名称。
  • build.gradle[.kts] 为根项目或子项目定义插件、依赖项、任务和约定。
  • gradle.properties 保存项目属性。用户级属性可以位于 ~/.gradle/gradle.properties。
  • gradlew、gradlew.bat 和 gradle/wrapper/ 构成 Gradle Wrapper, 应提交到版本库。
  • .gradle/ 是本地 Gradle 状态目录,应将其加入忽略列表。

在 settings.gradle.kts 中使用 include("service", "web") 注册 子项目。每个子项目可以拥有自己的构建脚本,同时共享整个仓库范围的约定。

使用 Wrapper #

在 CI 和日常开发中,应运行 ./gradlew build,而不是全局安装的 gradle。Wrapper 会下载 gradle/wrapper/gradle-wrapper.properties 中指定的版本,从而使构建可复现。 应审查 Wrapper 升级,并在发行版校验和可用时验证该校验和。

常用命令包括:

sh
./gradlew tasks
./gradlew test
./gradlew build
./gradlew clean
./gradlew :service:test

依赖项和任务 #

插件会添加配置和任务。例如,Java 插件提供 implementation、api(使用 java-library 时)、compileOnly、runtimeOnly 以及测试相关的配置。应优先使用范围最窄的配置:implementation 依赖项不会自动成为 使用者的编译类路径的一部分,而 API 依赖项会成为该公共契约的一部分。

Gradle 执行任务图。任务应声明其输入和输出,这样增量构建和构建缓存才能安全地跳过 已完成的工作。在配置阶段应避免执行未声明的文件或网络操作;应使用惰性 Provider 和任务动作。

使用版本目录、平台或依赖约束集中管理版本。在可复现性很重要时,锁定重要依赖项的版本, 并且不要将凭据提交到 gradle.properties;应通过环境变量、安全的 CI 密钥存储或被忽略的 本地文件提供凭据。

评论

在 GitHub 上阅读或评论(发表评论需要登录)