目录
一:环境准备
- IntelliJ IDEA 2021.1
- JDK 1.8.0_40
- Gradle 5.6.4
- spring-framework 5.2.x
笔者目前是用这一套环境正常编译通过的,如果不想踩坑,可跟我一样。否则应该会跟笔者一样,碰到各种兼容性问题。
二:下载spring-framework
spring-framework github下载或者fork一个到自己的github仓库,截图如下:
然后复制ssh链接,在本地下载即可。这里我是装了小乌龟git clone到本地的哈,也可以直接用命令下载,参考截图如下:
下载完成后的截图:
然后switch到5.2.x分支,截图如下(为何用这个分支,没啥原因,看心情的。。):
三:编译
1、查看如何编译
打开import-into-idea.md,在spring-framework项目的根目录下,截图如下:
打开文件内容,查看如下:
翻译如下:
1. 预编译' spring-oxm ' with ' ./ gradlew: spring-oxm: compileTestJava
2. 导入IntelliJ (File -> New -> Project from Existing Sources -> navigation to directory -> Select build.gradle)
3.当出现提示时,排除' spring-aspects '模块(或通过File-> Project Structure -> Modules导入后)
4. 代码
这里对第一步做下自己个人理解,通过./ gradlew预编译主要是为了看是否环境ok,spring-oxm单个项目是否能够编译通过,可以之后再导入idea全量编译,否则就没必要了。
2、开始预编译spring-oxm:
首先改下项目下的build.gradle的maven仓库为aliyun仓库地址:
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
可以大大提升网速,修改截图如下:
然后打开windows命令窗口,先cd到spring-framework的路径下,笔者的路径是I:\github\spring-framework,大家根据实际路径进入
执行gradlew.bat :spring-oxm:compileTestJava命令开始编译,截图如下:
3、导入IntelliJ
根据第二步的步骤File -> New -> Project from Existing Sources -> navigation to directory -> Select build.gradle导入idea开始编译下载各类jar包,build successful的截图如下:
没错虽然是显示编译成功了,但还是有部分错误,找到build.gradle的repositories位置将刚刚被我们注释掉的
maven { url "https://repo.spring.io/libs-spring-framework-build" }
给还原回来,截图如下:
再次编译spring-tx,这次就成功了,成功截图如下:
那么到这里spring-framework项目就编译完成了。
三:运行test
找到spring-test模块,随便找到一个单元测试类MockHttpSessionTests,运行结果如下:
单元测试也通过了,那么到这里spring-framework环境就算搭建完成了。
四:碰到的问题
1、第一个问题截图如下,无论怎么预编译都过不了,因为我的spring-framework用的代码是好早之前fork的,期间百度了好多查找原因有说网络原因的,有说没有配置
maven { url "http://repo.springsource.org/plugins-release" }
不管怎样,试了不行后,重新检查,发现很大可能是我fork的代码太旧导致,最后解决了这个问题。(解决问题也是一个技术能力的体现~~)
2、第二个问题如下,拿去百度了下,说是idea版本跟gradle版本冲突导致,我用的是idea 2018.2最开始,gradle是5.6.4,最后重新下了个idea 2021.1才解决这个问题编译成功的。