简介
Gradle 简介
Gradle 是一个基于 Apache Ant 和 Apache Maven 理念的现代构建自动化工具,它使用 Groovy 或 Kotlin 编写的领域特定语言(DSL)来定义项目构建逻辑。Gradle 结合了 Ant 的灵活性和 Maven 的依赖管理,同时提供了更强大的功能和更简洁的语法。
核心特点
-
声明式构建
- 使用 Groovy 或 Kotlin DSL 定义构建逻辑,比 XML 更简洁易读。
- 支持插件机制,通过插件扩展功能(如 Java、Android、Spring Boot 等)。
-
依赖管理
- 支持 Maven 和 Ivy 仓库,可轻松管理项目依赖。
- 支持依赖版本锁定、动态版本和依赖冲突解决。
-
多项目构建
- 支持单项目和多项目构建(子项目共享配置)。
- 可定义项目间的依赖关系,自动处理构建顺序。
-
增量构建
- 仅重新构建受影响的部分,提升构建速度。
- 支持任务输入/输出缓存,进一步优化性能。
-
扩展性
- 支持自定义任务和插件,满足复杂构建需求。
- 可与 IDE(如 IntelliJ IDEA、Android Studio)无缝集成。
与 Maven 的对比
特性 | Gradle | Maven |
---|---|---|
构建脚本语言 | Groovy/Kotlin(更灵活) | XML(较冗长) |
构建速度 | 增量构建,更快 | 全量构建,较慢 |
依赖管理 | 支持动态版本、版本锁定 | 依赖管理简单,但灵活性较低 |
多项目构建 | 支持更灵活的项目依赖关系 | 支持多项目,但配置较复杂 |
插件系统 | 更灵活,支持自定义插件 | 插件系统较固定 |
Gradle 的适用场景
-
Java/Kotlin 项目
- 替代 Maven 或 Ant,提供更高效的构建体验。
- 支持 Spring Boot、Hibernate 等框架的插件。
-
Android 开发
- Android Studio 默认使用 Gradle 作为构建工具。
- 支持 APK 打包、签名、多渠道发布等功能。
-
多语言项目
- 支持 Java、Kotlin、Groovy、Scala、C++ 等多种语言。
- 可通过插件扩展支持其他语言或工具。
-
CI/CD 集成
- 与 Jenkins、GitHub Actions 等 CI/CD 工具无缝集成。
- 支持并行构建和任务缓存,提升流水线效率。
下载
解压
配置
环境变量
GRADLE_HOME =D:\workspace_zs\gradle-8.0.2-all\gradle-8.0.2
GRADLE_USER_HOME=D:\workspace_zs\gradle-8.0.2-all\gradle_repository
配置Gradle仓库源
allprojects {
repositories {
//本地存放依赖的路径
maven { url 'file:///D:\\workspace_zs\\gradle-8.0.2-all\\gradle_repository'}
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
//使用该下载地址会报错,因为不是https。可以将http改为https
//maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
//使用该下载地址会报错,因为不是https。
//maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
- 仓库优先级:Gradle 会按声明顺序依次查找依赖,直到找到为止。
- 本地路径:优先从 D:\workspace_zs\gradle-8.0.2-all\gradle_repository 查找依赖(适用于离线开发或自定义依赖)。
- 本地 Maven 仓库:mavenLocal() 指向用户家目录下的 .m2/repository(默认本地仓库)。
- 阿里云镜像:国内高速镜像,替代 Maven 中央仓库,提升下载速度。
- Maven 中央仓库:默认的官方仓库(可能较慢,通常用镜像替代)。
注释说明:被注释的 Bstek 仓库因使用 HTTP 被禁用(现代 Gradle 要求 HTTPS 以确保安全性)。