由于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
三、相关编译命令
- 编译、测试、构建所有的jar、分发zip文件、文档等,使用:
./gradlew build
- 使用
-a
选项构建单独的模块,如仅构建spring-webmvc
,使用:
./gradlew -a :spring-webmvc:test
- 将构建后的制品(artifacts)发布到本地Maven仓库,使用:
./gradlew pTML
其中pTML
是publishToMavenLocal
构建任务的缩写,与./gradlew publishToMavenLocal
等效。
- 仅将构建后的jar制品发布到本地Maven仓库,而跳过文档的构建,使用:
./gradlew pTML -PskipDocs
- 生成参考(Reference)文档(同spring官方参考文档 ),使用:
./gradlew antora
参考文档生成后的目录为framework-docs/build/site
,可其部署至本地服务器进行浏览。
四、编译过程中可能遇到的问题及解决
- maven仓库的镜像加速,调整相关.gradle文件中的仓库配置;
- 关闭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);
。
- 参考文档的参考网址可调整
framework-docs/antora-playbook.yml
中site.url
中的配置,修改为本地网址。