1. 程式人生 > >Gradle4.0轉換Spring原始碼為eclipse時出現的問題

Gradle4.0轉換Spring原始碼為eclipse時出現的問題

最近受到老大影響,想看一下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地址為:
      [email protected]
      :spring-projects/spring-framework.git
  • 下載安裝gradle,配置環境變數(需要有java環境)

    • gradle和java安裝詳情直接百度就好
  • 進入目錄執行gradle cleanidea eclipse開始編譯