因为spring源码是通过gradle工程构建的。所以在我们从github官网克隆完项目之后,还需要通过gradle编译才行。如果没有下载gradle,先去下载安装包,gradle官网下载安装地址如下:
https://gradle.org/next-steps/?version=4.8.1&format=all
建议通过某盘下载,官网速度太慢。之后就是配置环境变量,过程和我们配置jdk差不多。当在命令行输入gradle - v 有如下显示就没错了。
接下来,我们可以在spring的根目录下发现import-into-idea的文件,打开之后有详细的步骤。
- Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
- When prompted exclude the
spring-aspects
module (or after the import via File-> Project Structure -> Modules) - Code away
因为我们是window系统,所以应该执行gradle.bat cleanIdea :spring-oxm:compileTestJava。当编译成功之后就可以导入了。不过可能会报错。提示不能解析发现一些jar包,如下图,因为从官网在外国的服务器上,容易下载失败。重试即可。
同时还有可能其他问题在这里就没有截图了:
报错原因是Failed to apply plugin [id ‘com.gradle.build-scan’]。其实就是gradle的版本太高了,和spring源码版本不一致,我修改spring源码中的build.gradle中的plugins {
id “org.sonarqube” version “2.5”
}之后,编译成功
最后依赖下载完成之后会显示构建项目成功,如图:
这下我们就可以将编译后的文件导入eclipse中了,虽然已经编译成功,但是并没有.classpath和.project的文件。如果你以普通类型的项目单模块导入是导不进的,因为eclipse不能识别为是一个java项目。这时你到cmd中选择到单模块的路径下,执行gradle cleanIdea eclipse,这时就能看到已经生成了.classpath和.project的文件。
在导入的过程还遇到了几个问题,第一个就是当我以Existing gradle project类型的文件导入时,eclipse还会去下载gradle的,在这里的建议是我们提前下载好离线安装包。下载的安装包应该根据导入项目中的gradle版本一致。
比如spring项目的话C:\Users\Administrator\git\spring-framework-4.3.22.RELEASE\gradle\wrapper中的gradle-wrapper.properties文件的distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip这一行。我们将下载好的gradle-2.14.1-all.zip放到C:\Users\Administrator.gradle\wrapper\dists\gradle-2.14.1-all\8bnwg5hd3w55iofp58khbp6yv该目录下,这样当导入项目的时候就不会再去下载了。
而我在其他博客中看到有的博主将编译后的项目直接以普通项目的类型导入,其实应该也是可以的。如果未编译的话需要以gradle类型的文件导入。