Spring 5.x 源碼編譯(IDEA Windows)

一、工具

  1. gradle 5.6.4 (百度gradle下載即可,添加gradle的bin目錄到Path環境變量中,命令行gradle -v檢查)
  2. spring-framework 源碼文件 (github搜索spring-framework下載最新的即可)
  3. IDEA

 

二、導入源碼

1、首先進入源碼根目錄查看 import-into-idea.md 文件

源碼預編譯步驟

 

2、在源碼根目錄命令行執行import-into-idea.md 中的1步驟 ./gradlew :spring-oxm:compileTestJava

能編譯成功即可,可能會出現和git相關異常,但似乎不影響後面的編譯和使用。

git錯誤

3、在源代碼根目錄的build.gradle 中先添加 aliyun 的倉庫地址

maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }

build.gradle添加aliyun倉庫地址

4、在IDEA中執行import-into-idea.md 中的2步驟,選擇自己的gradle目錄。然後等待編譯。

導入源碼到IDEA

5、編譯一般都是可以通過的。

6、添加自己的gradle java module到工程中。

添加自己的module到工程

7、把新module中的build.gradle文件名改爲 自己的module名.gradle ,然後在 dependencies 中添加

compile(project(":spring-beans"))
compile(project(":spring-context"))
compile(project(":spring-core"))
compile(project(":spring-expression"))

8、刪除新module的settings.gradle,在源碼工程下的settings.gradle中添加

include "你的新module名"

三、在新module中添加測試代碼

1、把新module下src目錄下的main目錄 右鍵Mark directory as sources root

新建包和測試類

新module目錄

 

Person.java

package bean;

public class Person {
	String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

BeanTest.java  (module設置好是可以引用到相關的類的)

package bean;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class BeanTest {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext();
		acac.register(Person.class);
		acac.refresh();

		Person person = acac.getBean("person", Person.class);
		person.setName("hhhh");
		System.out.println(person.getName());
	}

}

2、運行BeanTest.java 類

a、首先可能報錯找不到CoroutinesUtils類

找不到CoroutinesUtils類

不知道是不是工程構建方式有問題,這個類是spring-core 下的kotlin-coroutines編譯後的包裏的,應該引用好的呀。既然找不到,我是直接把包拿出來,然後讓spring-core這個module單獨添加這個jar包引用,然後再運行。如果沒有這個包,編譯一下工程就有了。(Project Structure頂上的mySpring可以刪除掉了,因爲已經加到spring工程中去了)

kotlin-coroutines 包位置
手動引入缺少的包

b、再運行,繼續報錯

缺少instrumentxx

這個是spring-instrument編譯後的jar中的類,也應該引用好了的呀。。再手動添加對應jar到spring-context的main下。

c、再運行,ok。

運行成功

d、之前在運行的時候還出現過缺少過卻commons-logging包的,也是去網上下載的jar加入到報錯的對應module下的。

 

四、說明

1、對gradle不熟,原本想源碼能夠編譯成功應該就能用了,結果在新建的module中死活找不到spring其他module裏的類,不是很懂。然後就把新建的工程加到了spring的setting.gradle中再引入對應的module就可以了。

2、能夠引入其他module中的類應該就可以正常測試了呀,結果運行各種找不到類。正常情況應該不是這樣,都已經使用了gradle應該不會出現依賴問題呀,可能工程配置真的有問題。

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 1899
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章