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 {@Autowiredprivate MockMvc mockMvc;@Testpublic void testSayHello() throws Exception {mockMvc.perform(get("/api/hello")).andExpect(status().isOk()).andExpect(content().string("Hello, Spring Boot with Gradle!"));}@Testpublic 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 查看所有任务
./gradlew tasks # Linux/Mac
gradlew.bat tasks # Windows
5.2 编译项目
./gradlew compileJava
5.3 运行测试
./gradlew test
测试报告生成在 build/reports/tests/test/index.html
路径下。
5.4 运行应用
./gradlew bootRun
启动后,可访问 http://localhost:8080/api/hello 测试接口。
5.5 打包应用
./gradlew build
打包成功后,生成的 JAR 文件位于 build/libs/
目录下,文件名为 spring-boot-gradle-demo-0.0.1-SNAPSHOT.jar
。
5.6 清理构建产物
./gradlew clean
5.7 构建并跳过测试
./gradlew build -x test
6. 运行打包后的应用
打包完成后,可以通过以下命令运行应用:
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 更高级的功能。