不管是学习spring特性来编写一些demo还是学习spring源码,从源码来构建开发环境都是值得推荐的。spring源码模块众多,如果每次编写完代码,进行全局build会比较慢,我们可以只针对修改的模块来build即可。Spring的源码环境已经集成好junit、slf4j开发环境,我们可以直接使用。在自己的练习模块中引入相关依赖模块也方便。后期对spring源码进行调试以及增加额外的注释也更加方便。
本地环境:JDK11.0.6、git客户端、gradle本地设置。
因为spring源码是使用gradle来构建的,在实际拉取相关版本的源码进行构建前,可以先设置下本地gradle的全局配置。注意,这里不用我们自行下载并本地安装gradle,spring源码中自带了gradle-wrapper,当我们启动idea的gradle插件来帮我们构建源码之前,如果它发现我们本地没有安装gradle,会自动帮我们安装,并基于我们本地配置的GRADLE_USER_HOME环境变量,来获取包含在目录下全局配置进行构建,构建下载的依赖和插件等也会放在该目录下。
![](https://i-blog.csdnimg.cn/blog_migrate/0b1ed7392d4f769578d3c3bea6ef989f.png)
配置环境变量:GRADLE_USER_HOMED:\Programs\gradle\.gradle
![](https://i-blog.csdnimg.cn/blog_migrate/303ead0821b9ddcaa6c5a4e112cc272f.png)
设置本地gradle全局配置
![](https://i-blog.csdnimg.cn/blog_migrate/3c900f110815fc1f3da160f70843d891.png)
gradle.properties
org.gradle.jvmargs=-Xmx2048M
# 可选配置:all,none,summary
org.gradle.warning.mode=none
init.gradle中配置maven仓库,这样每个gradle工程中不用再单独配置,使用全局设置即可。
allprojects {
repositories {
mavenLocal()
maven{ url 'https://maven.aliyun.com/repository/public'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven{ url 'https://maven.aliyun.com/repository/spring'}
maven{ url 'https://maven.aliyun.com/repository/spring-plugin'}
}
}
spring版本:5.2.x,下载地址:https://github.com/spring-projects/spring-framework/tree/v5.2.16.RELEASE
解压本地,改名spring。在idea中打开,会自动构建。报错:
org.gradle.process.internal.ExecException: Process 'command 'git'' finished with non-zero exit value 128
找到下面一行,注释掉即可:
id 'io.spring.ge.conventions' version '0.0.7'
Ctrl + B 编译工程
Spring源码环境ok后,执行一个单元测试FactoryBeanTests试试:
![](https://i-blog.csdnimg.cn/blog_migrate/bdff191a3099e6fbbc3d2ff93fce82df.png)