Gradle4.0轉換Spring原始碼為eclipse時出現的問題
阿新 • • 發佈:2019-01-06
最近受到老大影響,想看一下spring原始碼,於是從github上將原始碼clone下來,用Gradle去編譯,然後匯入eclipse分析。
編譯的時候,其他地方都很正常,但是spring-tx資料夾下編譯的時候就一直出錯,錯誤如下:
* Where:
Script 'D:\study\spring-framework\gradle\ide.gradle' line:24
* What went wrong:
Execution failed for task ':spring-tx:eclipseClasspath'.
Could not find matching constructor for: org.gradle.plugins.ide.eclipse.model.ProjectDependency<org.codehaus.groovy.runtime.GstringImpl, java.lang.String>
1、錯誤報告意思是:呼叫ProjectDependency的建構函式時傳的引數與定義的不匹配。報告上說出了在哪裡呼叫的:ide.gradle line:24, 在spring目錄下找到這個地方。
2、顯然在建立物件時傳入的引數與建構函式的定義不匹配,看上面知道這個類是由gradle來定義的,所以再去確認下下gradle是怎麼定義這個類的。
3、需要下載gradle全量包,在src目錄下可以找到對應原始碼,所以找到這個類的定義。
4、在gradle中可以看到,建構函式中只要傳個path就可以,這個註釋的意思就是傳參時只需要path就行。
5、將引數project(“:${projectName}”).path去除後,重新執行命令,build successful。
問題分析:gradle4.0更新了這個函式定義,但spring中沒有更新這個指令碼,不過github上spring原始碼是用gradle-3.5來構建。
問題是指令碼傳參不對,根據提示找到對應類的定義知道應該傳什麼引數。
我的編譯步驟如下:
下載spring原始碼
- 用git直接clone就好,或者直接去github上下載壓縮包
- git地址為:
下載安裝gradle,配置環境變數(需要有java環境)
- gradle和java安裝詳情直接百度就好
進入目錄執行gradle cleanidea eclipse開始編譯