Spring源码构建
下载源码
可以在github上下载 ,也可以下载我的源码(有注释)
git clone https://github.com/spring-projects/spring-framework.git
配置gradle 编译环境
Spring源码是通过gradle编译的,所以要先配置gradle编译环境
gradle下载安装 下载地址 ,我本地环境用的 v4.10.2
解压安装,安装路径不要出现空格(建议),如图
我使用的版本就是4.10.2 觉得下载慢的话,我这里提供了GitEE的下载地址
https://gitee.com/gitxuchang/instrument
配置环境变量
选中系统变量path,然后编辑,打开编辑环境,新建,
输入配置路径D:\JavaBase\gradle-4.10.2\bin
验证环境安装是否正常,如下图,表示正常
导入idea,配置idea环境
导入spring-framwork到idea
打开idea, 选择File—Open,选择解压的spring-framwork,导入到idea
配置idea中gradle环境
File—Settings ,搜索gradle, 配置gradle
指定gradle home: D:\JavaBase\gradle-4.10.2\bin
安装路径
Service directory path指定了gradle仓库: C:\Users\xuchang\.gradle
自定义vm参数可不配:-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
确定,等待gradle加载环境,时间有点久,耐心等待
因为gradle构建时会下载国外的源,很慢,可以换阿里的源
可以在 USER_HOME/.gradle/文件夹下添加 init.gradle文件来配置,我是配置在 C:\Users\xuchang\.gradle
目录下,对应idea中的 Service directory path
init.gradle文件内容如下:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
编译源码
打开Terminal中端,输入 如下命令编译spring源码,等待结果
编译:
gradlew :spring-oxm:compileTestJava
gradle objenesisRepackJar
gradle cglibRepackJar
会在Spring-framework\spring-core\build\libs生成缺失的jar
出现 BUILD SUCCESSFUL 表示编译成功
5.新建项目测试
新建一个module, 选择gradle项目
创建完成后打开build.gradle, 引入依赖jar,格式如下图
编写测试类,测试
遇到问题
找到对应的模块下修改optional(project(":spring-instrument"))
为 compile(project(":spring-expression"))
再重新构建
找到对应的Test类运行一遍就好了
总结
看了一段时间了,后面准备出spring源码的解析,欢迎关注!