下载编译spring-framework源码并导入STS中

一、准备工作

1. 下载安装STS(Spring Tool Suite),下载地址: http://spring.io/tools

STS是基于eclipse开发环境的,客制化用来开发Spring应用程序, 建议使用

2.下载安装gradle, 下载地址: http://www.gradle.org/downloads

Spring framework采用Gradle进行项目管理, 需要使用它进行项目构建

下载解压后, 配置环境变量:

新建GRADLE_HOME -> 值为 D:\Coding\gradle-2.2.1

Path中新增 -> ;%GRADLE_HOME%\bin;

3.下载安装jdk8, 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html

spring-framework使用了许多jdk8的特性,最好使用jdk8作为编译环境,否则会出现一些错误.

4.下载spring-framework源码(https://github.com/spring-projects/spring-framework)

Github下载: git clone [email protected]:spring-projects/spring-framework.git


Window直接下载: https://github.com/spring-projects/spring-framework/archive/master.zip

二、编译spring源码并导入STS中

1.切换到源码目录,执行命令: gradlew eclipse -x :eclipse

D:\Coding\sts-bundle\Github\spring-framework-master>gradlew eclipse -x :eclipse

此时会下载很多spring源码的依赖, 漫长的等待...

  1. D:\Coding\sts-bundle\Github\spring-framework-master>gradlew eclipse -x :eclipse
  2. :buildSrc :compileJava UP-TO-DATE
  3. :buildSrc :compileGroovy
  4. :buildSrc :processResources UP-TO-DATE
  5. :buildSrc :classes
  6. :buildSrc :jar
  7. :buildSrc :assemble
  8. :buildSrc :compileTestJava UP-TO-DATE
  9. :buildSrc :compileTestGroovy UP-TO-DATE
  10. :buildSrc :processTestResources UP-TO-DATE
  11. :buildSrc :testClasses UP-TO-DATE
  12. :buildSrc :test UP-TO-DATE
  13. :buildSrc :check UP-TO-DATE
  14. :buildSrc :build
  15. :spring-aop :eclipseClasspath
  16. :spring-aop :eclipseJdtPrepare
  17. :spring-aop :eclipseJdt
  18. :spring-aop :eclipseProject
  19. :spring-aop :eclipseSettings
  20. :spring-aop :eclipseWstComponent
  21. :spring-aop :eclipse
  22. :spring-aspects :eclipseClasspath
  23. :spring-aspects :eclipseJdtPrepare
  24. :spring-aspects :eclipseJdt
  25. :spring-aspects :eclipseProject
  26. :spring-aspects :eclipseSettings
  27. :spring-aspects :eclipseWstComponent
  28. :spring-aspects :eclipse
  29. :spring-beans :eclipseClasspath
  30. :spring-beans :eclipseJdtPrepare
  31. :spring-beans :eclipseJdt
  32. :spring-beans :eclipseProject
  33. :spring-beans :eclipseSettings
  34. :spring-beans :eclipseWstComponent
  35. :spring-beans :eclipse
  36. :spring-beans-groovy :eclipseClasspath
  37. :spring-beans-groovy :eclipseJdtPrepare
  38. :spring-beans-groovy :eclipseJdt
  39. :spring-beans-groovy :eclipseProject
  40. :spring-beans-groovy :eclipseSettings
  41. :spring-beans-groovy :eclipseWstComponent
  42. :spring-beans-groovy :eclipse
  43. :spring-build-src :eclipseClasspath
  44. :spring-build-src :eclipseJdtPrepare
  45. :spring-build-src :eclipseJdt
  46. :spring-build-src :eclipseProject
  47. :spring-build-src :eclipseSettings
  48. :spring-build-src :eclipseWstComponent
  49. :spring-build-src :eclipse
  50. :spring-context :eclipseClasspath
  51. :spring-context :eclipseJdtPrepare
  52. :spring-context :eclipseJdt
  53. :spring-context :eclipseProject
  54. :spring-context :eclipseSettings
  55. :spring-context :eclipseWstComponent
  56. :spring-context :eclipse
  57. :spring-context-support :eclipseClasspath
  58. :spring-context-support :eclipseJdtPrepare
  59. :spring-context-support :eclipseJdt
  60. :spring-context-support :eclipseProject
  61. :spring-context-support :eclipseSettings
  62. :spring-context-support :eclipseWstComponent
  63. :spring-context-support :eclipse
  64. :spring-core :eclipseClasspath
  65. :spring-core :eclipseJdtPrepare
  66. :spring-core :eclipseJdt
  67. :spring-core :eclipseProject
  68. :spring-core :eclipseSettings
  69. :spring-core :eclipseWstComponent
  70. :spring-core :eclipse
  71. :spring-expression :eclipseClasspath
  72. :spring-expression :eclipseJdtPrepare
  73. :spring-expression :eclipseJdt
  74. :spring-expression :eclipseProject
  75. :spring-expression :eclipseSettings
  76. :spring-expression :eclipseWstComponent
  77. :spring-expression :eclipse
  78. :spring-framework-bom :eclipseClasspath
  79. :spring-framework-bom :eclipseJdtPrepare
  80. :spring-framework-bom :eclipseJdt
  81. :spring-framework-bom :eclipseProject
  82. :spring-framework-bom :eclipseSettings
  83. :spring-framework-bom :eclipseWstComponent
  84. :spring-framework-bom :eclipse
  85. :spring-instrument :eclipseClasspath
  86. :spring-instrument :eclipseJdtPrepare
  87. :spring-instrument :eclipseJdt
  88. :spring-instrument :eclipseProject
  89. :spring-instrument :eclipseSettings
  90. :spring-instrument :eclipseWstComponent
  91. :spring-instrument :eclipse
  92. :spring-instrument-tomcat :eclipseClasspath
  93. :spring-instrument-tomcat :eclipseJdtPrepare
  94. :spring-instrument-tomcat :eclipseJdt
  95. :spring-instrument-tomcat :eclipseProject
  96. :spring-instrument-tomcat :eclipseSettings
  97. :spring-instrument-tomcat :eclipseWstComponent
  98. :spring-instrument-tomcat :eclipse
  99. :spring-jdbc :eclipseClasspath
  100. :spring-jdbc :eclipseJdtPrepare
  101. :spring-jdbc :eclipseJdt
  102. :spring-jdbc :eclipseProject
  103. :spring-jdbc :eclipseSettings
  104. :spring-jdbc :eclipseWstComponent
  105. :spring-jdbc :eclipse
  106. :spring-jms :eclipseClasspath
  107. :spring-jms :eclipseJdtPrepare
  108. :spring-jms :eclipseJdt
  109. :spring-jms :eclipseProject
  110. :spring-jms :eclipseSettings
  111. :spring-jms :eclipseWstComponent
  112. :spring-jms :eclipse
  113. :spring-messaging :eclipseClasspath
  114. :spring-messaging :eclipseJdtPrepare
  115. :spring-messaging :eclipseJdt
  116. :spring-messaging :eclipseProject
  117. :spring-messaging :eclipseSettings
  118. :spring-messaging :eclipseWstComponent
  119. :spring-messaging :eclipse
  120. :spring-orm :eclipseClasspath
  121. :spring-orm :eclipseJdtPrepare
  122. :spring-orm :eclipseJdt
  123. :spring-orm :eclipseProject
  124. :spring-orm :eclipseSettings
  125. :spring-orm :eclipseWstComponent
  126. :spring-orm :eclipse
  127. :spring-orm-hibernate4 :eclipseClasspath
  128. :spring-orm-hibernate4 :eclipseJdtPrepare
  129. :spring-orm-hibernate4 :eclipseJdt
  130. :spring-orm-hibernate4 :eclipseProject
  131. :spring-orm-hibernate4 :eclipseSettings
  132. :spring-orm-hibernate4 :eclipseWstComponent
  133. :spring-orm-hibernate4 :eclipse
  134. :spring-oxm :eclipseClasspath
  135. :spring-oxm :eclipseJdtPrepare
  136. :spring-oxm :eclipseJdt
  137. :spring-oxm :eclipseProject
  138. :spring-oxm :eclipseSettings
  139. :spring-oxm :eclipseWstComponent
  140. :spring-oxm :eclipse
  141. :spring-test :eclipseClasspath
  142. :spring-test :eclipseJdtPrepare
  143. :spring-test :eclipseJdt
  144. :spring-test :eclipseProject
  145. :spring-test :eclipseSettings
  146. :spring-test :eclipseWstComponent
  147. :spring-test :eclipse
  148. :spring-tx :eclipseClasspath
  149. :spring-tx :eclipseJdtPrepare
  150. :spring-tx :eclipseJdt
  151. :spring-tx :eclipseProject
  152. :spring-tx :eclipseSettings
  153. :spring-tx :eclipseWstComponent
  154. :spring-tx :eclipse
  155. :spring-web :eclipseClasspath
  156. :spring-web :eclipseJdtPrepare
  157. :spring-web :eclipseJdt
  158. :spring-web :eclipseProject
  159. :spring-web :eclipseSettings
  160. :spring-web :eclipseWstComponent
  161. :spring-web :eclipse
  162. :spring-webmvc :eclipseClasspath
  163. :spring-webmvc :eclipseJdtPrepare
  164. :spring-webmvc :eclipseJdt
  165. :spring-webmvc :eclipseProject
  166. :spring-webmvc :eclipseSettings
  167. :spring-webmvc :eclipseWstComponent
  168. :spring-webmvc :eclipse
  169. :spring-webmvc-portlet :eclipseClasspath
  170. :spring-webmvc-portlet :eclipseJdtPrepare
  171. :spring-webmvc-portlet :eclipseJdt
  172. :spring-webmvc-portlet :eclipseProject
  173. :spring-webmvc-portlet :eclipseSettings
  174. :spring-webmvc-portlet :eclipseWstComponent
  175. :spring-webmvc-portlet :eclipse
  176. :spring-webmvc-tiles2 :eclipseClasspath
  177. :spring-webmvc-tiles2 :eclipseJdtPrepare
  178. :spring-webmvc-tiles2 :eclipseJdt
  179. :spring-webmvc-tiles2 :eclipseProject
  180. :spring-webmvc-tiles2 :eclipseSettings
  181. :spring-webmvc-tiles2 :eclipseWstComponent
  182. :spring-webmvc-tiles2 :eclipse
  183. :spring-websocket :eclipseClasspath
  184. Download https:/ /repo.spring.io/libs-release/io/netty/netty-all/ 4.0. 20.Final/netty-all- 4.0. 20.Final.jar
  185. Download https:/ /repo.spring.io/libs-release/javax/websocket/javax.websocket-api/ 1.0/javax.websocket-api- 1.0-sources.jar
  186. Download https:/ /repo.spring.io/libs-release/org/apache/tomcat/tomcat-websocket/ 8.0. 15/tomcat-websocket- 8.0. 15-sources.jar
  187. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-spi/ 1.3. 5/tyrus-spi- 1.3. 5-sources.jar
  188. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-core/ 1.3. 5/tyrus-core- 1.3. 5-sources.jar
  189. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-server/ 1.3. 5/tyrus-server- 1.3. 5-sources.jar
  190. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-container-servlet/ 1.3. 5/tyrus-container-servlet- 1.3. 5-sources.jar
  191. Download https:/ /repo.spring.io/libs-release/org/eclipse/jetty/jetty-client/ 9.2. 4.v20141103/jetty-client- 9.2. 4.v20141103-sources.jar
  192. Download https:/ /repo.spring.io/libs-release/io/undertow/undertow-core/ 1.0. 17.Final/undertow-core- 1.0. 17.Final-sources.jar
  193. Download https:/ /repo.spring.io/libs-release/io/undertow/undertow-servlet/ 1.0. 17.Final/undertow-servlet- 1.0. 17.Final-sources.jar
  194. Download https:/ /repo.spring.io/libs-release/io/undertow/undertow-websockets-jsr/ 1.0. 17.Final/undertow-websockets-jsr- 1.0. 17.Final-sources.jar
  195. Download https:/ /repo.spring.io/libs-release/org/apache/tomcat/tomcat-juli/ 8.0. 15/tomcat-juli- 8.0. 15-sources.jar
  196. Download https:/ /repo.spring.io/libs-release/org/apache/tomcat/tomcat-util/ 8.0. 15/tomcat-util- 8.0. 15-sources.jar
  197. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-client/ 1.3. 5/tyrus-client- 1.3. 5-sources.jar
  198. Download https:/ /repo.spring.io/libs-release/org/glassfish/grizzly/grizzly-framework/ 2.3. 7/grizzly-framework- 2.3. 7-sources.jar
  199. Download https:/ /repo.spring.io/libs-release/org/glassfish/grizzly/grizzly-http/ 2.3. 7/grizzly-http- 2.3. 7-sources.jar
  200. Download https:/ /repo.spring.io/libs-release/org/glassfish/grizzly/grizzly-http-server/ 2.3. 7/grizzly-http-server- 2.3. 7-sources.jar
  201. Download https:/ /repo.spring.io/libs-release/org/glassfish/tyrus/tyrus-container-grizzly-client/ 1.3. 5/tyrus-container-grizzly-client- 1.3. 5-sources.jar
  202. Download https:/ /repo.spring.io/libs-release/org/jboss/logging/jboss-logging/ 3.1. 4.GA/jboss-logging- 3.1. 4.GA-sources.jar
  203. Download https:/ /repo.spring.io/libs-release/org/jboss/xnio/xnio-api/ 3.2. 0.Final/xnio-api- 3.2. 0.Final-sources.jar
  204. Download https:/ /repo.spring.io/libs-release/org/jboss/xnio/xnio-nio/ 3.2. 0.Final/xnio-nio- 3.2. 0.Final-sources.jar
  205. Download https:/ /repo.spring.io/libs-release/org/jboss/spec/javax/servlet/jboss-servlet-api_3. 1_spec/ 1.0. 0.Final/jboss-servlet-api_3. 1_spec- 1.0. 0.Final-sources.jar
  206. Download https:/ /repo.spring.io/libs-release/org/jboss/spec/javax/annotation/jboss-annotations-api_1. 2_spec/ 1.0. 0.Final/jboss-annotations-api_1. 2_spec- 1.0. 0.Final-sources.jar
  207. Download https:/ /repo.spring.io/libs-release/io/netty/netty-all/ 4.0. 20.Final/netty-all- 4.0. 20.Final-sources.jar
  208. :spring-websocket :eclipseJdtPrepare
  209. :spring-websocket :eclipseJdt
  210. :spring-websocket :eclipseProject
  211. :spring-websocket :eclipseSettings
  212. :spring-websocket :eclipseWstComponent
  213. :spring-websocket :eclipse
  214. BUILD SUCCESSFUL
  215. Total time: 2 mins 11.403 secs
  216. D:\Coding\sts-bundle\Github\spring-framework-master>

执行完以上步骤后, 再点击一次目录中的import-into-eclipse.bat文件, 点击后也会下载一些依赖...

做完以上步骤后, 进入项目目录, 会发现多了几个文件, 如.settings, .classpath, .project文件

2. 将编译后的项目导入sts中

Import -> Existing Projects into Workspace -> 选择父目录(spring-framework-master), 确定即可; 如果有错, 检查一下jdk是不是1.8.x版本的, 如果不是, 在preferences中, 设置JREs为jdk1.8



=====================================================================================

常见错误及解决方案:

1. cmd窗口下载时经常会卡住不动, 可以用ctrl + c强制结束, 再次执行命令, 此时可以继续下载

2. 报Execution failed for task':spring-core:compile Java错误, 多是因为没有安装jdk8, 导致许多类编译不过

3. 报Unrecognized VM option ‘MaxMetaspaceSize=1024m’
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.错误, 开始时, 也遇到过, 后将gradlew.bat文件中的下面两行注释(前面加两个冒号)掉, 错误就没了

  1. ::set GRADLE_OPTS=-XX:MaxMetaspaceSize= 1024m -Xmx1024m -XX:MaxHeapSize= 256m %GRADLE_OPTS%
  2. ::set DEFAULT_JVM_OPTS=

后来又遇到第二个错误, 没办法就安装了jdk8, 把注释掉的两行代码又给放开了, 也就没有了这个错误.

4. 如果中间遇到错误, 导致只编译了部分module, 可以使用如下命令重新生成eclipse可识别的项目

> gradle cleanIdea eclipse
5. 项目导入STS中后, 如果报GroovyDynamicElementReader cannot be resolved to a type错误, 需要在STS中安装Groovy Eclipse插件

Groovy Eclipse Wiki: https://github.com/groovy/groovy-eclipse/wiki



猜你喜欢

转载自blog.csdn.net/belalds/article/details/80902834