这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战
前言
Spring源码不是用的maven管理包之间的依赖的,用的是gradle,很多人准备打算好好阅读一下Spring源码,结果刚开始源码编译就放弃了。下面记录下我搭建的过程。
1. 源码下载
github老是挂掉,我们在gitee下载,fock一个tag版本到自己git上面 下载地址:gitee.com/mirrors/Spr…
比如我直接用fork的master分支
fork到自己git目录下面方便自己写一些demo和注释
注意:
- master 分支需要 JDK 11, 不然编译的时候报错, import jdk.jfr.Category不存在
- 5.2.x 分支, JDK8 即可
2. 下载gradle编译工具
2.1 下载gradle
查看Spring-Framework对应的gradle版本
D:\me\Spring-Framework\gradle\wrapper\gradle-wrapper.properties
去官网找到对应的版本, 官网地址:gradle.org/
2.2 设置环境变量
设置GRADLE_HOME
设置PATH环境变量
然后查看一下是否设置成功
3. 编译
3.1 预编译
1. Precompile `spring-oxm` with `./gradlew :spring-oxm:compileTestJava`
3.2 设置依赖下载的源
修改build.gradle文件
// 修改之前
repositories {
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
// 修改后
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/spring/'}
mavenLocal()
mavenCentral()
}
编译Spring-core模块
这样环境设置好了,可以开始阅读源码,写一些自己的demo了
4. 例子
/**
* @author boren
* @date 2021/8/20 14:21
*/
public class Demo {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("UserBeanTest.xml");
}
}
public class User {
private String name;
public User() {
System.out.println("hello spring!");
}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.br.spring.User"></bean>
</beans>
执行的结果: