拉取源碼
首先我們到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源碼本地環境終於構建成功!