使用IDEA+Gradle構建Spring5原始碼並除錯(手把手教程全圖解)

碼之初發表於2020-06-19

一、前言

  說一說我要寫這篇文章的初衷吧,前段時間有小夥伴在微信群求教怎樣構建spring原始碼,他在網上找了n個教程跟著後面花了兩天時間都沒構建好,正好我最近因工作原因從mac換成windows,開發環境要從零開始搭建和配置,想著也大概有一年多沒看過Spring原始碼了,閱讀Spring原始碼的好處我就不在此囉嗦了,我就藉此機會寫一篇構建Spring原始碼的過程,希望能讓後面的朋友少走彎路,少踩坑。<br/>   開始之前,先說一下我的電腦是新的,也就是所有開發工具和環境都是最新下載和配置的,另外我沒使用梯&子走捷徑,也就是說本文的原始碼構建速度是在正常使用網路情況下,我自己達到的最佳速度,不代表任何人。本文使用到的開發工具及版本說明如下:

  • IntelliJ IDEA 2020.1
  • gradle-6.4.1
  • Spring-framework最新版(5.3.0-SNAPSHOT)

  現在,讓我們正式開始Spring原始碼的構建之旅。

二、Spring原始碼構建之旅

下載配置Gradle

  這個不是本文的重點又比較簡單,你得靠自己先去配置好,如果你實在不會,在文章後面留言,我下次專門給你們寫這個教程。

下載Spring原始碼

1、在github上下載Spring最新版原始碼,如下圖所示: github下載spring原始碼

2、下載完成以後解壓到你自己本地資料夾。 解壓到本地資料夾

  我知道因為不可描述原因,大家下載gradle和spring原始碼可能比較耗時間,所以我把下載好的放在網盤了,需要的可以自己下載: Spring5原始碼直通車 提取碼:srbm

修改配置

  重點來了,下載好原始碼以後,我們要開始原始碼構建了,在構建之前,我們先開啟spring-framework-master,看我截圖的四個檔案。下面來一一說明。 配置說明

 

1、import-into-idea.md:這是官方提供的spring原始碼匯入idea的步驟和注意說明,我已經翻譯過了,可以移步:IDEA匯入Spring原始碼除錯必看

2、修改settings.gradle檔案,下載依賴的網路速度之不可描述原因,懂得人都懂,我們加上阿里雲的maven倉庫。

maven { url "https://maven.aliyun.com/repository/public" }

修改好之後如下圖所示:

settings.gradle修改

3、修改gradle.properties檔案,我都加了詳細註釋

version=5.3.0-SNAPSHOT
## 設定此引數主要是編譯下載包會佔用大量的記憶體,可能會記憶體溢位
org.gradle.jvmargs=-Xmx2048M
## 開啟 Gradle 快取
org.gradle.caching=true
## 開啟並行編譯
org.gradle.parallel=true
## 啟用新的孵化模式
org.gradle.configureondemand=true
## 開啟守護程式 通過開啟守護程式,下一次構建的時候,將會連線這個守護程式進行構建,而不是重新fork一個gradle構建程式
org.gradle.daemon=true

  

修改好之後如下圖所示:

gradle.properties描述

4、修改build.gradle檔案,加上使用阿里雲倉庫,提高下載速度。

maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

  

修改好之後如下圖所示:

在這裡插入圖片描述

 

準備構建

1、再次為了證明我是從零開始的,我把gradle的倉庫依賴截圖給大家看,gradle的本地倉庫依賴位置是C:\Users\admin.gradle\caches\modules-2\files-2.1或者D:\work\tools\gradle\gradle-6.4.1\caches\modules-2\files-2.1,具體位置看你自己的設定。我的倉庫現在是空的,沒有任何下載好的依賴,截圖如下: gradle倉庫依賴

2、預編譯spring-oxm,根據import-into-idea.md要求,我們需要先預編譯spring-oxm和spring-core,使用命令./gradlew :spring-oxm:compileTestJava,構建速度和截圖如下:

在這裡插入圖片描述

 

3、同上,預編譯spring-core,使用命令./gradlew :spring-core:compileTestJava,如下圖所示: 在這裡插入圖片描述   

至此,準備工作就完成的差不多了,接下來我們需要匯入到IDEA,繼續往下看。<br><br><br>

 

IDEA匯入Spring原始碼

1、下面開始使用idea匯入Spring原始碼,File -> New -> Project from Existing Souces... 在這裡插入圖片描述

2、選擇spring-framework-master專案

在這裡插入圖片描述

 

3、選擇使用gradle編譯,點選finish。 在這裡插入圖片描述

 

4、可以發現IDEA會自動開始構建編譯spring原始碼。 在這裡插入圖片描述

 

5、不要著急,還有最後一步,選擇File -> Settings -> Gradle,如下圖所示調整: 在這裡插入圖片描述

 

6、去給物件問候一聲,或者去抽根菸(吸菸有害健康),或者遠處眺望一會,稍安勿躁,等回來時發現,不要網上說的一個小時、40分鐘、20分鐘,只要8m22s就完成Spring原始碼的構建編譯工作,怎麼樣?還可以吧? 在這裡插入圖片描述

補充,這是另一個小夥伴按照我的方法後構建速度,9m3s。 在這裡插入圖片描述   

到這兒,使用IDEA+Gradle構建Spring5原始碼就已經全部完成。

三、驗證

  實踐是檢驗真理的唯一標準,那麼怎樣驗證我們上面的構建是否成功呢,很簡單,寫個demo測試一下就好了,下面進入驗證過程。

1、在spring-framework-master專案下新建我們自己的測試module,如下圖所示: 在這裡插入圖片描述

2、選擇使用gradle

在這裡插入圖片描述

3、輸入自己的module名

在這裡插入圖片描述

4、既然要驗證,那我們肯定需要依賴spring的模組,我們在我們剛剛新建的模組下build.gradle檔案中修改使用阿里雲倉庫,同時依賴spring-context模組。

implementation(project(":spring-context"))

修改後如下如所示:

在這裡插入圖片描述

5、重新整理依賴,重新編譯,速度同樣飛快。 在這裡插入圖片描述

6、我們先寫一個配置類

package com.mazhichu.spring.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* @ClassName: MazhichuConfig
* @Description: 配置
* @Author: Moore
* @Date: 2020-06-08 12:30
* @Version: V1.0
*/
@Configuration
@ComponentScan("com.mazhichu")
public class MazhichuConfig {
}

7、寫一個實體Bean

package com.mazhichu.spring.repository;

import org.springframework.stereotype.Repository;
/**
* @ClassName: Hello
* @Description: bean
* @Author: Moore
* @Date: 2020-06-08 12:30
* @Version: V1.0
*/
@Repository
public class Hello {
	public void hello(){
		System.out.println("Hello,ma_zhichu!");
	}
}

  

8、編寫測試類,執行,如下圖所示: 在這裡插入圖片描述

總結

至此,使用IDEA+Gradle構建Spring5原始碼並簡單除錯的教程就到這兒,本文所有內容都來自本人親自實踐,如果對你實實在在有幫助,點贊就是最大的鼓勵,如果你在構建過程中遇到任何問題,也歡迎留言告訴我,我看到後會第一時間幫你解答。如果你期待更好的文章,歡迎關注我的公眾號“碼之初”,謝謝!

相關文章