spring源码编译
- 1、安装gradle
- 2、拉取源码
- 3、配置gradle文件来源及镜像仓库
- 4、预编译
- 5、验证
- 6、可能遇到的报错
- 6.1、jdk.jfr不存在
- 6.2、checkstyleMain
- 6.3、org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()Ljava/lang/String
- 6.4、其他
jdk:14
gradle:v7.2
spring:v5.3.19
idea:2021.1.3
1、安装gradle
目前公司所用的spring版本是5.3.19。所以就以该版本为目标,其对应的gradle版本可以是7.2(参考自gradle/wrapper/gradle-wrapper.properties文件)。下载对应的版本并配置环境变量即可。
下载地址:https://downloads.gradle-dn.com/distributions/gradle-7.2-all.zip
环境变量配置:
新增gradle相关变量
GRADLE_HOME为解压后的根目录。
GRADLE_USER_HOME为仓库地址,也可以不在gradle-7.2目录下。自行决定仓库目录。
编辑path变量
最好也先将idea的gradle配置一下
2、拉取源码
git clone https://github.com/spring-projects/spring-framework.git
切换到v5.3.19分支
git checkout v5.3.19
3、配置gradle文件来源及镜像仓库
修改gradle/wrapper/gradle-wrapper.properties文件把gradle文件来源指向自己本地文件(不然每次都会去下载网速不好会很慢)
修改build.gradle配置镜像仓库
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
修改settings.gradle配置镜像仓库
maven { url “https://maven.aliyun.com/repository/public” }
4、预编译
gradlew :spring-oxm:compileTestJava
可能会报错
将这个警告忽视再重新执行一次
@SuppressWarnings(“deprecation”)
public static Publisher<?> invokeSuspendingFunction(Method method, Object target, Object... args) { KFunction<?> function = Objects.requireNonNull(ReflectJvmMapping.getKotlinFunction(method));
if (m…
当预编译完成后就可以用idea打开项目了,因为要下载各种依赖,所以第一次打开项目会很慢。
5、验证
新建module
引入想要的模块
编写测试程序运行
6、可能遇到的报错
6.1、jdk.jfr不存在
这是因为jdk11及以后的jdk版本才有这个包。指定jdk版本即可
file->project structure
file->settings
如果是build and run using: InteIIiJ IDEA 记得把java compiler的jdk版本也指定一下
6.2、checkstyleMain
将checkstyleMain文件的内容注释或者删了即可
6.3、org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()Ljava/lang/String
这是IDEA不兼容对应的gradle版本。尝试升级idea版本或者降低gradle版本即可。
6.4、其他
有时候出现一些奇奇怪怪的问题。可以试试clean后再重新build
或者Invalidate Caches