idea構建spring源碼 完整版

在構建spring源碼的過程中,碰到了很多的問題,網上搜索了很多的教程,沒有一個能構建成功的。。。下面總結下一下自己的經驗。
(一)環境準備

1、 Idea 2018.3.5
2、gradle 5.6
gradle下載完之後,設置環境變量,如下:GRADLE_HOME和GRADLE_USER_HOME(用於存放下載的jar)
在這裏插入圖片描述
win+r,輸入cmd點擊回車,執行命令gradle -version
在這裏插入圖片描述
這樣就設置成功了;
試過很多版本,這一套版本構建沒出現問題。可能每個人情況不一樣
(二)下載
方式一: spring的源碼是由github版本控制器來管理,所以直接使用git直接clone Spring源碼到本地:git clone git://github.com/SpringSource/spring-framework.git(不會的百度下,git怎麼下載,我平常使用svn,git接觸的少)
方式二:github網站下載,下載5.0x或者5.1版本,其中5.0x更加穩定
https://github.com/spring-projects/spring-framework
(三)編譯
打開 spring-framework-master文件夾下的文件import-into-idea.md
在這裏插入圖片描述
在spring-framework-master的路徑下打開cmd,執行命令 gradlew :spring-oxm:compileTestJava ,構建就會開始。因爲會下載jar,需要的時間會比較久,可以使用科學的上網工具。中間由於網絡問題,可能會失敗幾次,多執行幾次命令就可以了。
在這裏插入圖片描述
出現紅框中的內容就是成功了,下面的報錯不用管,是git的問題。
(四)導入idea
1、選擇gradle在這裏插入圖片描述
2、在這裏插入圖片描述
(五)修改文件
打開gradle下的docs.gradle文件
1、註釋方法 dokka在這裏插入圖片描述
2、註釋方法asciidoctor
在這裏插入圖片描述
3、修改方法task schemaZip爲下面的內容(spring是在linux是開發的,路徑和windows的不一樣,因此需要需改這個方法。不改百分之99會報錯)

    task schemaZip(type: Zip) {
	group = "Distribution"
	baseName = "spring-framework"
	classifier = "schema"
	description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at https://springframework.org/schema."
	duplicatesStrategy 'exclude'
	moduleProjects.each { subproject ->
		def Properties schemas = new Properties();

		subproject.sourceSets.main.resources.find {
			//這的路徑需要改爲\\
			it.path.endsWith("META-INF\\spring.schemas")
		}?.withInputStream { schemas.load(it) }

		for (def key : schemas.keySet()) {
			def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
			assert shortName != key
			File xsdFile = subproject.sourceSets.main.resources.find {
				//這裏需要進行路徑替換
				it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
			}
			assert xsdFile != null
			into (shortName) {
				from xsdFile.path
			}
		}
	}
}
``3、`右側gradle(沒有的百度下),雙擊spring-oxm下的compileTestJava
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101133246448.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
4、上一步執行成功之後,執行下面步驟
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101133641625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
執行成功之後,就表示構建差不多成功了
(六)測試
找到DispatcherServletTests.java,運行一下,如果沒有報錯,那麼恭喜你,你構建成功了,就可以開心的往下玩耍了,不過一般不會一次成功,經常會報錯找不到某個類。
解決辦法參考下面的問題解決
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101133907288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
(七)問題
1、說明
項目的路徑不能存在中文、特殊字符和空格。很多莫名其妙的問題都是這個導致的,需要特別注意
2、nohttpProxy
這個問題是沒有設置代理,可能需要科學上網工具了,能科學上網後
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101134431600.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
3、導入spring源碼spring-core報錯,在org.springframework.core.ReactiveAdapterRegistry中報錯:
這個是缺少依賴導致的,需要添加依賴---》File--Project Structure---點擊左上角+
kotlin-coroutines-5.2.3.BUILD-SNAPSHOT.jar位於spring-core\kotlin-coroutines\build\libs

其他缺少包的也可以這樣做,少那個就添加哪個
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101134756564.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200101135042385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)

在這裏插入圖片描述
寫在最後:
有問題,歡迎留言。我們共同解決。

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