Spring Boot 项目集成 Gradle:构建、测试、打包全流程教程

Spring Boot 项目集成 Gradle:构建、测试、打包全流程教程

本文将详细介绍如何使用 Gradle 构建工具来管理 Spring Boot 项目的全流程,包括项目创建、依赖管理、代码编写、测试、打包和运行等环节。

1. 环境准备

在开始前,请确保你的开发环境中已安装以下工具:

  • JDK 17 或更高版本
  • Gradle 7.5+ 或使用 Gradle 包装器(推荐)
  • IDE(如 IntelliJ IDEA 或 Eclipse)

2. 创建 Spring Boot 项目

2.1 使用 Spring Initializr 创建

访问 Spring Initializr 网站,进行如下配置:

  • Project: Gradle Project
  • Language: Java
  • Spring Boot: 3.2.x(最新稳定版)
  • Group: com.example
  • Artifact: spring-boot-gradle-demo
  • Name: spring-boot-gradle-demo
  • Package name: com.example.demo
  • Packaging: Jar
  • Java: 17
  • Dependencies: Spring Web, Spring Boot DevTools, Lombok, Spring Boot Starter Test

点击 "Generate" 按钮下载项目压缩包,解压后导入到你的 IDE 中。

2.2 项目结构

导入后,项目结构如下:

复制代码
spring-boot-gradle-demo/
├── build.gradle          // Gradle 构建脚本
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties  // Gradle 包装器配置
├── gradlew               // Linux/Mac 上的 Gradle 包装器脚本
├── gradlew.bat           // Windows 上的 Gradle 包装器脚本
├── settings.gradle       // Gradle 项目设置
└── src/
    ├── main/
    │   ├── java/
    │   │   └── com/
    │   │       └── example/
    │   │           └── demo/
    │   │               └── SpringBootGradleDemoApplication.java  // 主应用类
    │   └── resources/
    │       ├── application.properties  // 应用配置文件
    │       ├── static/                 // 静态资源
    │       └── templates/              // 模板文件
    └── test/
        └── java/
            └── com/
                └── example/
                    └── demo/
                        └── SpringBootGradleDemoApplicationTests.java  // 测试类

3. 理解 Gradle 配置文件

3.1 build.gradle

这是 Gradle 构建的核心配置文件:

复制代码
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.0'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

配置说明:

  • plugins: 应用的 Gradle 插件,包括 Java 插件、Spring Boot 插件和依赖管理插件
  • group, version, sourceCompatibility: 项目基本信息和 Java 版本
  • repositories: 依赖仓库配置,这里使用 Maven 中央仓库
  • dependencies: 项目依赖配置
    • implementation: 编译和运行时依赖
    • developmentOnly: 仅开发环境使用的依赖
    • compileOnly: 仅编译时需要,运行时不需要的依赖
    • annotationProcessor: 注解处理器
    • testImplementation: 测试依赖
  • tasks.named('test'): 配置测试任务使用 JUnit 5 平台

3.2 settings.gradle

复制代码
rootProject.name = 'spring-boot-gradle-demo'

这个文件用于配置项目名称和多项目构建信息,单项目情况下只需要指定根项目名称。

4. 编写示例代码

4.1 创建控制器

DemoController.java

创建一个简单的 REST 控制器:

复制代码
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class DemoController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot with Gradle!";
    }
    
    @GetMapping("/greet/{name}")
    public String greet(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

4.2 编写测试用例

DemoControllerTest.java

为控制器编写测试:

复制代码
package com.example.demo.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
@AutoConfigureMockMvc
public class DemoControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testSayHello() throws Exception {
        mockMvc.perform(get("/api/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, Spring Boot with Gradle!"));
    }

    @Test
    public void testGreet() throws Exception {
        String name = "Gradle";
        mockMvc.perform(get("/api/greet/{name}", name))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, " + name + "!"));
    }
}

5. Gradle 构建命令

Gradle 提供了丰富的任务来管理项目生命周期,以下是常用命令:

5.1 查看所有任务

bash 复制代码
./gradlew tasks  # Linux/Mac
gradlew.bat tasks  # Windows

5.2 编译项目

bash 复制代码
./gradlew compileJava

5.3 运行测试

bash 复制代码
./gradlew test

测试报告生成在 build/reports/tests/test/index.html 路径下。

5.4 运行应用

bash 复制代码
./gradlew bootRun

启动后,可访问 http://localhost:8080/api/hello 测试接口。

5.5 打包应用

bash 复制代码
./gradlew build

打包成功后,生成的 JAR 文件位于 build/libs/ 目录下,文件名为 spring-boot-gradle-demo-0.0.1-SNAPSHOT.jar

5.6 清理构建产物

bash 复制代码
./gradlew clean

5.7 构建并跳过测试

bash 复制代码
./gradlew build -x test

6. 运行打包后的应用

打包完成后,可以通过以下命令运行应用:

bash 复制代码
java -jar build/libs/spring-boot-gradle-demo-0.0.1-SNAPSHOT.jar

7. 自定义 Gradle 任务

你可以在 build.gradle 中添加自定义任务来满足特定需求。例如,添加一个任务来显示项目信息:

复制代码
// 在 build.gradle 中添加以下内容
task showProjectInfo {
    doLast {
        println "Project Name: ${project.name}"
        println "Project Version: ${project.version}"
        println "Java Version: ${sourceCompatibility}"
        println "Spring Boot Version: ${project.properties['spring.boot.version']}"
    }
}

// 让 build 任务依赖于 showProjectInfo 任务
build.dependsOn showProjectInfo

现在运行 ./gradlew build 时会先执行自定义任务,输出项目信息。

8. 总结

通过本文,你已经学会了如何:

  • 创建集成 Gradle 的 Spring Boot 项目
  • 理解 Gradle 配置文件
  • 编写简单的 Spring Boot 应用和测试
  • 使用 Gradle 命令进行构建、测试和打包
  • 自定义 Gradle 任务

Gradle 提供了强大的依赖管理和构建能力,与 Spring Boot 结合使用可以极大提高开发效率。掌握这些基本操作后,你可以根据项目需求进一步探索 Gradle 更高级的功能。

相关推荐
用户5965906181345 分钟前
在asp.net 控制器传入json对象的格式验证的几种方法
后端
国服第二切图仔18 分钟前
Rust入门开发之Rust中如何实现面向对象编程
开发语言·后端·rust
Mos_x28 分钟前
15.<Spring Boot 日志>
java·后端
mm-q291522272931 分钟前
Java并发编程从入门到进阶 多场景实战
java·开发语言
William_cl34 分钟前
【ASP.NET MVC 进阶】DataAnnotations 特性验证全解析:从基础到避坑,让数据校验像 “安检“ 一样靠谱
后端·asp.net·mvc
Violet_YSWY38 分钟前
任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存【示例】
java·数据结构
SimonKing1 小时前
你的项目还在用MyBatis吗?或许这个框架更适合你:Easy-Query
java·后端·程序员
nice_lcj5201 小时前
认识多线程:单例模式
java·开发语言·单例模式
货拉拉技术1 小时前
从代码到配置:如何用SQL配置实现数据核对
java·后端
xuejianxinokok1 小时前
可能被忽略的 pgvector 各种坑
数据库·后端