由于spring.io 不再提供spring相关项目文档的分发zip文件供下载,本文介绍从源代码编译Spring项目并生成相关文档,可供本地部署。适用Spring Framework、Spring Boot、Spring Cloud、Spring AI等Spring项目的本地构建及文档生成。

一、从spring的源代码仓库获取源代码

git clone http://github.com/spring-projects/spring-framework.git

二、切换到需要的分支

git checkout -b local-dev-xxx vx.x.x

三、相关编译命令

  1. 编译、测试、构建所有的jar、分发zip文件、文档等,使用:
./gradlew build
  1. 使用-a选项构建单独的模块,如仅构建spring-webmvc,使用:
./gradlew -a :spring-webmvc:test
  1. 将构建后的制品(artifacts)发布到本地Maven仓库,使用:
./gradlew pTML

其中pTMLpublishToMavenLocal构建任务的缩写,与./gradlew publishToMavenLocal等效。

  1. 仅将构建后的jar制品发布到本地Maven仓库,而跳过文档的构建,使用:
./gradlew pTML -PskipDocs
  1. 生成参考(Reference)文档(同spring官方参考文档 ),使用:
./gradlew antora

参考文档生成后的目录为framework-docs/build/site,可其部署至本地服务器进行浏览。

四、编译过程中可能遇到的问题及解决

  1. maven仓库的镜像加速,调整相关.gradle文件中的仓库配置;
  2. 关闭gradle的foojay插件自动下载jdk,调整gradle.properties文件,增加以下属性:
org.gradle.java.installations.auto-download=false
org.gradle.java.installations.paths=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home,/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home

并根据自己的JDK提供商及buildSrc/src/main/java/org/springframework/build/JavaConventions.java调整JDK提供商名称。 如本地使用Adoptium提供的JDK,可将toolchain.getVendor().set(JvmVendorSpec.BELLSOFT);改为toolchain.getVendor().set(JvmVendorSpec.ADOPTIUM);

  1. 参考文档的参考网址可调整framework-docs/antora-playbook.ymlsite.url中的配置,修改为本地网址。

五、参考文献

  1. Contributing to the Spring Framework
  2. Build from Source
  3. Gradle Toolchains for projects
  4. Gradle Java API