Gradle构建工具

文章目录

    • [1. Gradle 的作用](#1. Gradle 的作用)
    • [2. Gradle 与 Maven 的区别](#2. Gradle 与 Maven 的区别)
    • [3. Gradle 的基本结构](#3. Gradle 的基本结构)
      • [目录结构(以 Java 项目为例)](#目录结构(以 Java 项目为例))
    • [4. 基本的 `build.gradle` 配置](#4. 基本的 build.gradle 配置)
    • [5. 常用 Gradle 命令](#5. 常用 Gradle 命令)
    • [6. Gradle 在 Android 开发中的作用](#6. Gradle 在 Android 开发中的作用)
      • [Android 项目的 `build.gradle` 示例:](#Android 项目的 build.gradle 示例:)
    • [7. Gradle Wrapper(推荐使用)](#7. Gradle Wrapper(推荐使用))
      • [生成 Wrapper](#生成 Wrapper)
      • [使用 Wrapper](#使用 Wrapper)
    • [8. Groovy DSL vs Kotlin DSL](#8. Groovy DSL vs Kotlin DSL)
      • [Groovy DSL(默认)](#Groovy DSL(默认))
      • [Kotlin DSL(推荐)](#Kotlin DSL(推荐))
    • [9. Gradle 多模块项目](#9. Gradle 多模块项目)

Gradle 是一个现代化的构建工具,广泛应用于 Java、Kotlin、Android 等项目的构建、依赖管理和自动化任务。它结合了 MavenAnt 的优点,提供了高性能、灵活的构建能力。


1. Gradle 的作用

Gradle 主要用于:

  • 自动化构建(编译、打包、测试、发布)
  • 依赖管理(类似于 Maven)
  • 多模块项目管理(适用于大型项目)
  • 自定义任务(灵活配置各种构建任务)

2. Gradle 与 Maven 的区别

对比项 Gradle Maven
配置文件 build.gradle (Groovy) 或 build.gradle.kts (Kotlin DSL) pom.xml (XML)
语法 基于 Groovy/Kotlin 的 DSL XML 配置
依赖管理 支持 mavenCentral()google() 使用 <dependency> 标签
扩展性 高度可扩展(可以自定义 Task) 扩展性较弱
性能 增量构建(只编译修改的部分)更快 需要全量编译

3. Gradle 的基本结构

Gradle 的核心概念:

  • Project(项目):代表一个构建单元,可以是单模块或多模块。
  • Task (任务):Gradle 的最小执行单元,比如 compileJavatest 等。
  • 依赖管理:Gradle 可以使用 Maven 仓库或本地文件进行依赖管理。

目录结构(以 Java 项目为例)

my-project/
 ├── build.gradle        # Gradle 构建脚本(Groovy DSL)
 ├── settings.gradle     # 配置项目的基本信息(如多模块)
 ├── gradle/            # Gradle 相关文件
 ├── src/
 │   ├── main/java/      # 主要的 Java 代码
 │   ├── main/resources/ # 资源文件
 │   ├── test/java/      # 测试代码

4. 基本的 build.gradle 配置

gradle 复制代码
plugins {
    id 'java'  // 使用 Java 插件
}

repositories {
    mavenCentral()  // 使用 Maven 中央仓库
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:3.0.2'
    testImplementation 'junit:junit:4.13.2'
}

tasks.register('hello') {
    doLast {
        println 'Hello, Gradle!'
    }
}
  • plugins:声明使用的插件(如 Java、Kotlin、Android)
  • repositories:指定依赖仓库
  • dependencies:声明项目的依赖
  • tasks.register('hello') :自定义一个 hello 任务

5. 常用 Gradle 命令

命令 作用
gradle build 构建项目(编译、测试、打包)
gradle clean 清理 build/ 目录
gradle run 运行 Java 应用(如果使用 application 插件)
gradle test 运行测试
gradle dependencies 查看依赖关系
gradle tasks 查看所有可用任务
gradle -q hello 运行 hello 任务

6. Gradle 在 Android 开发中的作用

在 Android Studio 中,Gradle 主要负责:

  • 管理依赖 (如 implementation 'com.android.support:appcompat-v7:28.0.0'
  • 编译和打包 APK (自动执行 assembleDebugassembleRelease
  • 多渠道打包 (如 productFlavors
  • 代码混淆和优化(ProGuard / R8)

Android 项目的 build.gradle 示例:

gradle 复制代码
android {
    compileSdk 33

    defaultConfig {
        applicationId "com.example.myapp"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
}

7. Gradle Wrapper(推荐使用)

Gradle 提供了 Wrapper(包装器),保证所有开发者使用相同版本的 Gradle。

生成 Wrapper

sh 复制代码
gradle wrapper

生成的文件:

gradlew       # Linux/Mac 运行 Gradle
gradlew.bat   # Windows 运行 Gradle
gradle/wrapper/
 ├── gradle-wrapper.jar
 ├── gradle-wrapper.properties

使用 Wrapper

sh 复制代码
./gradlew build  # Mac/Linux
gradlew.bat build  # Windows

⚠️ 优点

  • 统一 Gradle 版本,避免开发环境不一致
  • 运行 gradlew 自动下载 Gradle,无需手动安装

8. Groovy DSL vs Kotlin DSL

Gradle 支持 Groovy DSLbuild.gradle)和 Kotlin DSLbuild.gradle.kts)。

Groovy DSL(默认)

gradle 复制代码
plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

Kotlin DSL(推荐)

kotlin 复制代码
plugins {
    id("java")
}

repositories {
    mavenCentral()
}

Kotlin DSL 的优势

  • 提供 类型安全(避免拼写错误)
  • 更好的 代码补全(IDE 支持更强)

9. Gradle 多模块项目

适用于 大型项目,多个模块可以共享代码和依赖。

目录结构:

multi-module-project/
 ├── settings.gradle
 ├── build.gradle
 ├── app/ (主应用)
 │   ├── build.gradle
 ├── library/ (公共库)
 │   ├── build.gradle

settings.gradle 配置:

gradle 复制代码
rootProject.name = 'multi-module-project'
include 'app', 'library'

app/build.gradle

gradle 复制代码
dependencies {
    implementation project(':library')
}

相关推荐
开开心心就好3 分钟前
便捷开启 PDF 功能之旅,绿色软件随心用
android·java·windows·智能手机·eclipse·pdf·软件工程
Key~美好的每一天20 分钟前
一文了解JVM的垃圾回收
java·jvm
By北阳1 小时前
Go语言 vs Java语言:核心差异与适用场景解析
java·开发语言·golang
J总裁的小芒果1 小时前
java项目发送短信--腾讯云
java·python·腾讯云
wenbin_java1 小时前
设计模式之桥接模式:原理、实现与应用
java·设计模式·桥接模式
孫治AllenSun1 小时前
【Synchronized】不同的使用场景和案例
java·开发语言·jvm
ramsey172 小时前
Jmeter-RSA加密、解密、加签、验签
java·开发语言·python
程序视点2 小时前
重磅消息!Eclipse正式上线GitHub Copilot!
java·后端·github copilot
程序员清风3 小时前
ZooKeeper是多主多从的结构,还是一主多从的结构?
java·后端·面试
小王不会写code3 小时前
Spring MVC面试题(一)
java·spring·mvc