一. 引入已经配置好的源码
已经配置好的码云仓库,下载后切换到对应分支即可直接运行
jdk11国内镜像:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/linux/
spring版本:5.3.4
spring码云地址: https://gitee.com/tangjingshan/Spring-Framework
springboot版本:2.4.3
springboot码云地址:https://gitee.com/tangjingshan/spring-boot
切换无更改分支:git checkout nicky5.3.4(只改了配置,没有改动源码)
切换学习分支:git checkout nickyStudy5.3.4 (此分支会加上学习时的注释,偶尔也会改动源码)
先build springframework源码,再build springboot源码
- 下载好jdk11到指定目录
- 获取两个项目的码云代码
git checkout nicky5.3.4
-
idea导入两个项目(导入时,如自动build,先结束掉)
-
更改 idea的gradle的jdk版本
-
更改 idea的project的jdk版本,配置使用【gradle-wrapper.properties】的配置去构建项目,否则会有版本问题
- build project
- 执行springframework下的publishToMavenLocal,打包到本地仓库
- 运行stduy demo
spring demo路径: org.springframework.study.TestRegisterBean#main
springboot路径:org.springframework.boot.sutdy.SpringBootStudyApplication#main
二. springframework源码环境搭建
- fork 源码到码云仓库,然后下载到本地,然后切换到你需要的分支,然后再基于此分支新建一个自己的分支
2. 配置idea, 记住配置使用【gradle-wrapper.properties】的配置去构建项目,否则会有版本问题
- 导入项目,此时可能会自动build项目,强制结束先。根据spring版本,配置jdk,spring5.4.3需要jdk11
jdk13国内镜像:
https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/linux/
- 更改相关镜像为阿里云镜像
- 全局搜索'repositories {'关键词
- 加上下面这段
mavenLocal()
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
- 禁用checkStyle ,注释掉checkStyle相关代码即可,避免加注释时执行强制代码检查
文件地址: Spring-Framework/build.gradle
全局搜索,checkstyle 和 javaformat 注释掉相关配置即可(包括.java)
- 关闭idea自动格式化,否则打包时会全局格式化所有文件
文件地址:Spring-Framework/src/idea/spring-framework.xml
- 去除单元测试,javadoc
文件地址:/tjs-workspace/spring-boot/build.gradle
加入如下配置
subprojects {
tasks.withType(Javadoc).all {
enabled = false
}
tasks.withType(Test).all {
enabled = false
}
}
- 新建自己的测试模块,引入需要的包即可.使用AnnotationConfigApplicationContext基于注解加载bean到ioc
- 坑1,新建的模块的.gradle配置文件,必须命名规范。比如新建的模块为spring-study,则.gradle配置文件必须要是spring-study.gradle,否则无法引入依赖!
- 执行测试例子
- 打包到本地仓库,方便后面springboot引入
-
报错:javadoc: 警告…
未知用处,注释掉相关代码:全局搜索“project.ext.javadocLinks”,注释掉
-
报错: /Spring-Framework/build/docs/javadoc/package-list (没有那个文件或目录)
未知用处,注释掉相关代码:gradle/docs.gradle: externalDocumentationLink
可能还有其他错误,不影响本次学习的相关的类的,都可以注释掉
三. springboot源码环境搭建
基本同上,除了以下这点
- 去除不相关的项目依赖,加速启动
文件地址:/tjs-workspace/spring-boot/settings.gradle
四. springboot 整合 本地springframework 聚合项目
- 聚合项目,更方便整合测试,未完待续。。。
大致思路
1. 合并两个项目的buildSrc,根目录.gradle
2. .gradle文件 更改springboot引入springframework的地方