效果
搭建一個spring原始碼除錯環境,創建一個spring-demo模塊,寫一些測驗代碼,

給原始碼添加注釋,

給原始碼打包

ubantu環境下搭建spring6.0.x原始碼環境
步驟
原始碼網址
Spring Framework

下載代碼
fork到自己的GitHub倉庫,然后拉代碼
git clone https://github.com/GitHubXiaoSiyuan/spring-framework-6.0.7.git
代碼拉到 ~/files/projects/kernel_projects/fr
amework 目錄下

gradle下載與配置
下載
https://gradle.org/releases/
gradle/wrapper/gradle-wrapper.properties
找到版本為7.6的 gradle
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip

找到 7.6 的版本,點擊下載(注:點擊之后,用迅雷下載很快)
下載鏈接如下(復制即可觸發迅雷下載)
https://downloads.gradle-dn.com/distributions/gradle-7.6-all.zip

解壓
sudo unzip gradle-7.6-all.zip


配置環境變數
# 設定環境變數
sudo vi /etc/profile
# 在底部加入這一段
# gradle
export GRADLE_HOME=/home/xiaosy/files/development/gradle-7.6
export PATH=$NODE_HOME/bin:$PATH
# 變數生效
source /etc/profile
# 設定讀寫權限
sudo chmod -R 777 /home/xiaosy/files/development/gradle-7.6/bin
# 查看版本
# 不知道為什么直接 gradle -v 沒用
/home/xiaosy/files/development/gradle-7.6/bin/gradle -v


idea配置
配置gradle編譯
Tools -> gradle
# 路徑
壓縮包放在 /gradle/wrapper/ 目錄下
路徑配置
/home/xiaosy/files/development/gradle-7.6


下載二進制版本
https://services.gradle.org/distributions/gradle-7.6-bin.zip

jdk
設定為 jdk17
# 設定環境變數
sudo vi /etc/profile
# 修改jdk路徑
# jdk
export JAVA_HOME=/home/xiaosy/files/development/jdk17/jdk-17.0.6
# 變數生效
source /etc/profile

gradle-wrapper.properties修改
打開 gradle/wrapper/gradle-wrapper.properties
將distributionUrld地址替換為本地gradle下載
# 修改后
distributionUrl=/home/xiaosy/files/development/gradle-7.6-all.zip

build.gradle檔案修改
替換國內鏡像
repositories {
maven { url "https://maven.aliyun.com/repository/central" }
mavenCentral()
maven {
url "https://repo.spring.io/milestone"
content {
// Netty 5 optional support
includeGroup 'io.projectreactor.netty'
}
}
maven { url "https://repo.spring.io/libs-spring-framework-build" }
if (version.contains('-')) {
maven { url "https://repo.spring.io/milestone" }
}
if (version.endsWith('-SNAPSHOT')) {
maven { url "https://repo.spring.io/snapshot" }
}
}

setting.gradle檔案修改
替換國內鏡像
repositories {
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
url "https://maven.aliyun.com/repository/google"
}
maven { url "https://maven.aliyun.com/repository/gradle-plugin/" }
gradlePluginPortal()
google()
mavenCentral()
}

注釋
//注釋掉不然會A build scan was not published as you have not authenticated with server 'ge.spring.io'.

用idea集成的gradlereload

編譯成功

新建module

在新專案的build.gradle下添加對spring模塊的依賴,這里我先添加了spring-beans 和spring-core的依賴,
dependencies {
compile(project(":spring-beans"))
compile(project(":spring-core"))
testCompile group: 'junit', name: 'junit', version: '4.12'
}

在新專案的src/main/resource下添加spring-config.xml檔案
<?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">
<!--把物件的創建交給spring來管理-->
<bean id="person" >
<property name="id" value="https://www.cnblogs.com/xiaosiyuan88888888/archive/2023/04/09/1"></property>
<property name="name" value="https://www.cnblogs.com/xiaosiyuan88888888/archive/2023/04/09/zhangsan"></property>
</bean>
</beans>
創建測驗bean和啟動類
public class Person {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) ac.getBean("person");
System.out.println(person);
}
}
debug
1. 更改壓縮包位置
The specified Gradle distribution 'file:/home/xiaosy/files/projects/kernel_projects/framework/spring-framework-6.0.7/gradle/wrapper/home/xiaosy/files/development/gradle-7.6-all.zip' does not exist.

2
設定檔案讀寫權限
Could not create parent directory for lock file /gradle-7.6/wrapper/dists/gradle-7.6-all/cmg34oui1skho6ogkheeq1oxe/gradle-7.6-all.zip.lck
sudo chmod -R 777 ~/files/projects/kernel_projects/framework/spring-framework-6.0.7

3
Cause: zip file is empty

4

解決:
gradle.properties
org.gradle.java.home=/home/xiaosy/files/development/jdk17/jdk-17.0.6
倆 gradle.properties 都設定了

注釋掉這段代碼,然后重寫就不報錯了,純粹的編譯問題

參考
- Spring 6 原始碼編譯和高效閱讀原始碼技巧分享,備份
參考
- Spring6.0.0原始碼閱讀環境搭建-gradle構建編譯,備份
- Spring原始碼深度決議:一、Spring整體架構和原始碼環境搭建,備份
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549506.html
標籤:其他
上一篇:sip訊息拆包原理及組包流程
下一篇:現在還值得學Python嗎?
