← 开发笔记

用 Spring Initializr 创建并测试 Gradle 项目

本文目录

用 Spring Initializr 创建项目后,先通过生成的 Gradle Wrapper 测试,再依赖 IDE。将生成、依赖解析、JDK 兼容性和应用启动分别检查,便于定位失败原因。

此示例使用 Boot 4.1.2、Java 17 和 Gradle Groovy,由 start.spring.io于2026年10月27日实际生成。Wrapper 选择了 Gradle 9.8.2。服务的默认值和可用版本会变化,不要假设此组合永远可用。

处理流程

生成、检查和测试的流程

运行 Wrapper 前先生成完整归档。上下文测试和独立运行的 HTTP 应用分别验证不同内容。

选择项目设置

设置 示例 含义
Project / Language Gradle - Groovy / Java 构建工具和源语言
Spring Boot 4.1.2 生成此示例时可用的正式版本
Java / Packaging 17 / Jar 源码工具链和打包方式
Group / Artifact example / demo 项目标识
Package name example.demo 应用包名
Dependencies Spring Web HTTP 端点所需依赖

在 UI 中点击 Generate,或通过此 URL 下载归档。确认每条命令成功后再运行下一条。 使用空工作目录,避免覆盖现有项目。

curl --fail --show-error --location 'https://start.spring.io/starter.zip?type=gradle-project&language=java&bootVersion=4.1.2&baseDir=demo&groupId=example&artifactId=demo&name=Demo&packageName=example.demo&packaging=jar&javaVersion=17&dependencies=web' --output demo.zip
unzip demo.zip
cd demo
./gradlew --version
./gradlew test

服务停止提供某版本后,生成 API 可能拒绝该版本。检查当前服务元数据和 Initializr 参考文档,再共同选择兼容的 Boot、JDK 和 Gradle 版本。悄悄将示例替换为最新默认值会改变复现条件。

检查生成的四个核心文件

以下为简化格式后的四个核心文件。完整归档还包含 Wrapper 脚本、Wrapper JAR 及设置,以及资源文件。只把这四个文件复制到空目录不会生成 ./gradlew。

settings.gradle

rootProject.name = 'demo'

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '4.1.2'
    id 'io.spring.dependency-management' version '1.1.7'
}
group = 'example'
version = '0.0.1-SNAPSHOT'
java {
    toolchain { languageVersion = JavaLanguageVersion.of(17) }
}
repositories { mavenCentral() }
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webmvc'
    testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') { useJUnitPlatform() }

src/main/java/example/demo/DemoApplication.java

package example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

src/test/java/example/demo/DemoApplicationTests.java

package example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {
    @Test
    void contextLoads() {}
}

生成的 Boot 4.1.2 项目使用 spring-boot-starter-webmvc 和 spring-boot-starter-webmvc-test。以所选版本生成的配置为起点,不要混用不同 Boot 世代的片段。Boot 4.1.2 要求规定 Java 17 或更高版本,以及Gradle 8.x(从 8.14 开始)或 9.x。

区分测试与应用启动

contextLoads() 通过表示测试上下文能启动。尚无控制器时,/ 返回 404 并不表示启动失败。另行运行应用,并在对应终端按 Ctrl+C 停止。

./gradlew bootRun

将生成的 build.gradle 与 Gradle Wrapper 文件一起提交。Gradle 版本与 java.toolchain 中的 Java 版本独立。使用 ./gradlew --version 检查运行 Gradle 的 JVM,并将其与编译、执行应用所选的 JDK 区分。

接着阅读在 IntelliJ 中打开项目并提供 HTTP 服务。关于 Boot 与 Framework 版本号不同的原因,参见 Spring Boot 发布历史与版本关系。

讨论