mac上通过idea编译Spring5.1.x
Spring学习到现在,一直都处于使用阶段,没有详细的研究过,最近在研究Spring5源码的时候,网上大神建议编译spring5源码方便学习,
在编译的过程中遇到了一些坑,以下就是整理出来的步骤,分享给大家:
一、环境、工具准备
1、系统:mac os10.15.4
2、java版本:jdk1.8.0_181 下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
3、gradle版本:4.10.2 下载地址:https://downloads.gradle-dn.com/distributions/gradle-4.10.2-all.zip
4、源码版本:5.1.x 下载地址:https://github.com/spring-projects/spring-framework/releases
5、IDEA版本:ntelliJ IDEA 2018.2.1 下载地址:https://www.jetbrains.com/idea/download/
二、下载源码
点击“clone or download” 按钮下载源码
下载完成后解压
- build.gradle 放了一些依赖配置,有点像maven的pom文件
- gradle.properties 存放当前Spring的版本,可以对比下看看是不是5.0.8版本
- gradlew.bat 放的是项目的构建脚本,不过在本章用不上,本章是使用IDEA去构建
- import-into-idea.md 这个是Spring导入IDEA的说明文件,可以根据里面的步骤去导入
三、安装gradle并配置gradle
解压gradle-4.10.2-all.zip ,并记录下解压后的路径(配置的时需要用到),例:/Users/ruihaohao/software/gradle-4.10.2
通过终端在当前系统用户目录下打开 .bash_profile
cd /Users/ruihaohao vi .bash_profile
加入:
export GRADLE_HOME=/Users/ruihaohao/software/gradle-4.10.2/bin
export PATH=$PATH:$GRADLE_HOME
验证是否配置成功:gradle -v
四、安装IDEA
五、idea导入源码
点击File->Open打开项目,选择源码位置 gradlejvm配置:-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
点击OK
之后打开import-into-idea.md文件
a,因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个包
在源码的根目录执行:gradle cglibRepackJar gradle objenesisRepackJar,或手动添加spring-objenesis-repack 和 spring-cglib-repack两个jar(百度云盘链接: https://pan.baidu.com/s/1YVcXmZnKKYisgRk3yZ8tFA 提取码:q561 )
b、由于对IntelliJ IDEA未知的方面类型的引用,spring方面无法编译。详见http://youtrack.jetbrains.com/issue/IDEA-64446。同时,可以从项目中排除“spring-aspects”,以避免编译错误
c、虽然JUnit测试是从命令行通过Gradle的,但是当从IntelliJ IDEA运行时,有些测试可能会失败。解决这个问题正在进行中。
如果试图从IntelliJ IDEA中运行所有JUnit测试,则可能需要设置以下VM选项以避免内存不足错误:
-XX:MaxPermSize=2048m-Xmx2048m-XX:MaxHeapSize=2048m
d、如果在IDE中调用“Rebuild Project”,则必须再次生成spring oxm
模块的一些测试资源(gradle :springoxm:compileTestJava)
注:注意gradle和jdk的版本
六、验证测试
在刚编译的spring5的源码中增加测试model spring-learn
测试代码如下


测试如下:
到此为止测试成功!!!!

浙公网安备 33010602011771号