Spring源碼本地環境搭建

拉取源碼

首先我們到GitHub上找到Spring項目:
在這裏插入圖片描述

將版本切換到5.0.x,然後複製分支鏈接:https://github.com/spring-projects/spring-framework.git
在這裏插入圖片描述

直接通過idea拉取項目或者使用命令拉取:
在這裏插入圖片描述
在這裏插入圖片描述

項目導入

由於Spring 5之後都是採用Gradle構建的,所以導入項目前本地需要有Gradle環境。
Gradle下載地址:https://gradle.org/releases/

下載完成之後,解壓並添加環境變量:
在這裏插入圖片描述
在這裏插入圖片描述
配置好之後通過gradle -v命令查看gradle版本,如果顯示了版本信息,說明配置生效了:
在這裏插入圖片描述

通過Gradle導入:
在這裏插入圖片描述

項目屬性設置:
在這裏插入圖片描述

導入之後等待項目構建完成,構建成功之後會看到下圖所示:
在這裏插入圖片描述
如果中途構建出錯,或者超時了,點擊gradle視圖中的刷新按鈕,會自動重新構建:
在這裏插入圖片描述

編譯

先使用gradle進行build:
在這裏插入圖片描述
然後再對項目進行編譯:
在這裏插入圖片描述

填坑之旅

1、Kotlin: [Internal Error] java.lang.LinkageError
如果出現這個錯可能是Kotlin版本太低或者idea版本太低導致的:
在這裏插入圖片描述
可以嘗試升級Kotlin或者升級idea:
在這裏插入圖片描述
在這裏插入圖片描述
GitHub上也有人遇到了這個問題:https://github.com/spring-projects/spring-framework/issues/23354
在這裏插入圖片描述
我的升級完Kotlin就不報這個錯了。

2、Gradle build的過程中checkstyle校驗不過
出現這個問題我們可以把去掉checkstyle,首先找到項目根目錄的build.gradle文件:
在這裏插入圖片描述
然後將下圖所示的兩處地方註釋掉,然後重新build就可以了:
在這裏插入圖片描述
在這裏插入圖片描述
3、Error:(43, 16) java: 找不到符號符號: 類 AnnotationCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJCachingConfiguration
在這裏插入圖片描述
原因是因爲AnnotationCacheAspect文件不是class而是aspect所以jdk識別不了無法編譯。

我們需要安裝aspectj.jar使用Ajc進行編譯。

aspectj.jar下載地址:https://www.eclipse.org/aspectj/downloads.php
在這裏插入圖片描述
下載好之後,在此文件的同級目錄執行java -jar aspectj-1.9.4.jar命令打開安裝界面:
在這裏插入圖片描述
在這裏插入圖片描述
選擇jdk安裝目錄:
在這裏插入圖片描述
設置aspectj安裝位置:
在這裏插入圖片描述
點擊install開始安裝:
在這裏插入圖片描述
對AspectJ項目添加Facets,File -> Project Structure:
在這裏插入圖片描述
選擇你所需要添加的Module,點擊ok:
在這裏插入圖片描述
添加好之後Apply確認:
在這裏插入圖片描述
修改編譯器爲Ajc
在這裏插入圖片描述
找到Java Compiler,將Use compiler修改爲Ajc並選擇Ajc的路徑,然後勾選中Delegate to Javac,它的作用是隻編譯添加了AspectJ的項目,其他則使用Jdk:
在這裏插入圖片描述
測試代碼:

<?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="myTestBean" class="org.springframework.test.MyTestBean"/>
</beans>
public class Test {
	public static void main(String[] args) {
		BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));
		MyTestBean bean = (MyTestBean) beanFactory.getBean("myTestBean");
		bean.outStr();
	}
}

class MyTestBean {

	public void outStr() {
		System.out.println("myTestBean");
	}
}

運行,成功輸出:
在這裏插入圖片描述
一波三折,Spring源碼本地環境終於構建成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章