当前位置: 首页 > news >正文

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 更高级的功能。

http://www.dtcms.com/a/469581.html

相关文章:

  • 电商主要是做什么工作东莞seo收费
  • SAP MM 通用物料移动过账冲销接口分享
  • 设计logo免费网站电商网站对比表格
  • SAP Vendor Invoice Management by OpenText (VIM)
  • 用 PyQt5 + PyPDF2 做一个“智能分页”的大 PDF 拆分器(含 GUI 与命令行双版本,附完整源码)
  • 芯片结构简介-arm/x86
  • Agentic AI 教程与 AI 编程入门:从基础到实战(含代码、流程图与 Prompt)
  • 做一个公司网站一般多少钱自己做的网站怎么放视频
  • 开源软件License科普:GPL/LGPL/Apache/木兰等license解析
  • React闭包陷阱(stale closure)介绍(React状态更新引用旧值)解决方法:使用函数式更新写法
  • 【Java数据结构】Map 与 Set 接口全解析
  • 海洋做网站大连网上办事大厅
  • 创新平台网站建设方案wordpress 恶意代码
  • Jupyter Notebook/Lab的高级技巧与快捷键
  • Request 和 Response 都使用了 Fetch API 的 Body 混入
  • 大数据毕业设计选题推荐-基于大数据的人体体能活动能量消耗数据分析与可视化系统-大数据-Spark-Hadoop-Bigdata
  • 电子电气架构 --- 操作系统的发展趋势
  • R语言绘图神器| ggplot2与其基本用法介绍
  • 自动负氧离子监测站:科技赋能,精准守护清新空气
  • 商务卫士包括网站建设seo优化谷歌
  • java-代码随想录第66天|Floyd 算法、A * 算法精讲 (A star算法)
  • 外贸展示网站多少钱企业画册内容
  • 上门做网站哪里有wordpress调用网页
  • 【部署python网站】宝塔面板 小目标2:实时搜索网上资源文件网站放在服务器上 用AI做一个作品,不断迭代。
  • ubuntu服务器重启,xinference自动加载模型脚本
  • 网站建设服务协议 百度什么网站免费制作
  • 有阿里云的主机了怎么做网站wordpress会务网站模版
  • 深度学习入门(二)——反向传播与向量化推导
  • C++设计模式之行为型模式:状态模式(State)
  • 免费自助建站网站一览网络营销推广方法有哪几种