菜单

构建与开发

相关源文件

本文档涵盖了 Spring Framework 的构建系统、开发基础设施和贡献指南。它解释了基于 Gradle 的多模块构建结构、自定义构建插件、开发规范以及项目的构建、测试和贡献过程。

有关整体项目架构和模块关系的信息,请参阅架构概述。有关特定 Spring Framework 组件的详细信息,请参阅核心组件

构建系统架构

Spring Framework 使用了一套精密的基于 Gradle 的构建系统,该系统管理着 26 个以上的模块,并通过构建插件和规范提供了广泛的自定义功能。

构建系统概述

来源: build.gradle1-99 settings.gradle1-53 gradle.properties1-11

模块结构和依赖

构建系统定义了两种主要的项目类别:模块项目(以spring-开头)和框架项目(以framework-开头)。

来源: build.gradle13-15 settings.gradle5-31

自定义构建基础设施

buildSrc 目录包含自定义 Gradle 插件和规范,这些插件和规范用于标准化所有 Spring 模块的构建过程。

构建插件架构

来源: buildSrc/src/main/java/org/springframework/build/ConventionsPlugin.java38-50 buildSrc/build.gradle34-61

Java 和 Kotlin 规范

构建系统在所有模块中强制执行一致的编译设置

设置目的
JVM 工具链Bellsoft JDK 24一致的构建环境
字节码目标Java 17运行时兼容性
编译器参数-parameters, -Xlint:*, -Werror代码质量强制执行
编码UTF-8字符编码

来源: buildSrc/src/main/java/org/springframework/build/JavaConventions.java49-74

测试基础设施

测试规范提供了全面的测试支持,包括重试功能和运行时提示测试。

来源: buildSrc/src/main/java/org/springframework/build/TestConventions.java55-75 buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java49-70

模块配置系统

每个 Spring 模块都遵循一个标准化配置模式,该模式在gradle/spring-module.gradle中定义。

模块构建结构

来源: gradle/spring-module.gradle1-127 gradle/publications.gradle1-64

依赖管理

该框架采用了多层依赖管理方法

组件目的位置
framework-platform外部依赖版本framework-platform/framework-platform.gradle9-151
framework-bomSpring 模块版本framework-bom/framework-bom.gradle8-14
依赖管理版本强制执行build.gradle39-51

来源: 1-153 1-23

开发工作流

从源代码构建

项目通过 Gradle wrapper 提供标准化构建命令。

代码质量与风格

构建通过多种机制强制执行代码质量

来源: buildSrc/src/main/java/org/springframework/build/CheckstyleConventions.java39-79

贡献指南

该项目遵循在CONTRIBUTING.md中概述的特定贡献标准。

方面要求
DCO需要 Signed-off-by 尾注
提交格式55 字符主题,72 字符正文
分支始终以main分支为目标
测试为新功能包含测试
文档更新相关文档

来源: CONTRIBUTING.md84-92

高级构建特性

多版本 JAR 支持

适用于需要特定 Java 版本实现的模块

来源: buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseExtension.java62-158 spring-core/spring-core.gradle13-15

运行时提示测试

构建系统包含针对 GraalVM 原生镜像兼容性的专门测试。

来源: buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java56-67 buildSrc/README.md56-89