菜单

构建系统

相关源文件

本文档介绍了 Spring Framework 仓库中基于 Gradle 的构建基础设施。它解释了多模块构建结构、自定义构建插件、依赖管理以及规范框架如何编译、测试和打包的构建约定。

有关项目配置和贡献指南的信息,请参阅项目配置和贡献

概述

Spring Framework 使用一套复杂的 Gradle 构建系统,旨在管理超过 25 个具有复杂相互依赖关系的模块。该构建系统提供统一的约定、依赖管理和自定义工具,以确保所有模块的一致编译、测试和打包。

多模块结构

该构建被组织为一个 Gradle 多项目构建,具有不同的模块类型和职责。

来源: build.gradle1-99 settings.gradle1-53 gradle/spring-module.gradle1-127

模块分类

该构建通过命名约定和配置来区分不同类型的模块

模块类型模式目的
框架模块spring-*核心 Spring Framework 功能
基础设施framework-*构建和文档支持
测试集成integration-tests跨模块集成测试

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

构建配置架构

构建系统采用分层配置方法,以确保一致性,同时允许模块特定的自定义。

来源: build.gradle96-98 gradle/spring-module.gradle1-127 framework-platform/framework-platform.gradle1-153

自定义构建插件

buildSrc 目录包含实现 Spring Framework 特定构建逻辑的自定义 Gradle 插件。

核心约定插件

来源: buildSrc/src/main/java/org/springframework/build/ConventionsPlugin.java38-50 buildSrc/src/main/java/org/springframework/build/JavaConventions.java38-137 buildSrc/src/main/java/org/springframework/build/TestConventions.java41-89

专用构建插件

来源: buildSrc/src/main/java/org/springframework/build/optional/OptionalDependenciesPlugin.java34-56 buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseJarPlugin.java39-61 buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java42-101

依赖管理

该框架通过 framework-platform 模块采用集中式依赖管理策略。

平台配置

来源: framework-platform/framework-platform.gradle9-25 framework-platform/framework-platform.gradle26-151 build.gradle48-50

依赖类别

该平台管理多个类别的依赖项

类别示例数量
外部 BOMJackson, Reactor, JUnit, Netty15+
单独约束Jakarta API、测试框架、数据访问150+
框架模块内部项目依赖25+

来源: framework-platform/framework-platform.gradle10-24 framework-platform/framework-platform.gradle26-151

模块构建约定

每个 Spring 模块都通过 spring-module.gradle 脚本继承通用构建约定。

标准模块配置

来源: gradle/spring-module.gradle1-8 gradle/spring-module.gradle11-16

JAR 配置和清单

来源: gradle/spring-module.gradle47-60 spring-core/spring-core.gradle114-126

Java 编译配置

构建系统强制所有模块使用一致的 Java 编译设置。

编译器配置

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

多版本 JAR 支持

构建系统支持为需要特定 Java 版本实现的模块创建多版本 JAR。

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

测试基础设施

构建系统提供全面的测试支持,并针对不同测试类型提供专门配置。

测试配置

来源: buildSrc/src/main/java/org/springframework/build/TestConventions.java55-75 buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java56-66 buildSrc/src/main/java/org/springframework/build/TestConventions.java77-83

构建执行和任务

构建系统定义了几个关键任务类别,用于构建生命周期的不同方面。

主要构建任务

任务类别目的关键任务
编译源代码编译compileJava, compileTestJava
测试测试执行test, runtimeHintsTest
质量代码质量checkstyle, architecture
打包制品创建jar, sourcesJar, javadocJar
文档API 文档javadoc, dokkaHtml
发布制品发布publish, publishToMavenLocal

来源: gradle/spring-module.gradle100-111 gradle/spring-module.gradle113-121 buildSrc/src/main/java/org/springframework/build/hint/RuntimeHintsAgentPlugin.java56-67

Gradle Wrapper 配置

该构建使用 Gradle Wrapper 来确保不同开发环境之间的一致构建。

来源: gradle/wrapper/gradle-wrapper.properties1-8 gradlew1-252 gradlew.bat1-95