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')
}

相关推荐
陈小桔9 分钟前
idea中重新加载所有maven项目失败,但maven compile成功
java·maven
小学鸡!10 分钟前
Spring Boot实现日志链路追踪
java·spring boot·后端
xiaogg367821 分钟前
阿里云k8s1.33部署yaml和dockerfile配置文件
java·linux·kubernetes
逆光的July38 分钟前
Hikari连接池
java
微风粼粼1 小时前
eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
java·ide·eclipse
番茄Salad1 小时前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
天若有情6731 小时前
Spring MVC文件上传与下载全面详解:从原理到实战
java·spring·mvc·springmvc·javaee·multipart
祈祷苍天赐我java之术1 小时前
Redis 数据类型与使用场景
java·开发语言·前端·redis·分布式·spring·bootstrap
Olrookie2 小时前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi
倚栏听风雨3 小时前
java.lang.SecurityException异常
java