Idea编译运行Spring5.2.x版本源码

Idea编译运行Spring5.2.x版本源码

简述

现在SpringBoot、SpringCloud等框架是现代企业项目后端使用的主流框架,但这些技术都是在Spring框架基础上进行扩展的,如果把Spring框架整明白了,其他框架理解起来就非常easy,搞懂Sping那么Spring源码必看

编译源码踩过坑,记录一下

前置

环境介绍

  • IDEA 2020.2.xx
  • JDK8或者8以上
  • Maven3.6 (版本随意)
  • Gradle5.6.4 (最好版本一致)

接下来介绍Spring源码下载到Idea编译运行整个流程:

流程

下载安装Gradle

下载

下载地址:https://services.gradle.org/distributions/
推荐下载gradle-x.x.x-all.zip的版本,-all的版本防止编译时少文件,带来不必要的麻烦

下载如图所示:
在这里插入图片描述
安装
1.配置GRADLE_HOME环境变量

在这里插入图片描述
2.配置GRADLE_USER_HOME仓库(指定盘存放jar)
在这里插入图片描述
3.配置path环境变量
在这里插入图片描述
4.gradle环境验证,输入CMD打开终端,然后输入gradle -v进行检测,如果正常将输出以下信息
在这里插入图片描述

下载Spring源码并编译运行

下载

1.选择5.2.x分支,选择zip文件进行下载

下载地址:https://github.com/spring-projects/spring-framework/

2.解压zip进入至项目根目录spring-framework-5.2.x,然后编辑build.gradle文件,在标签里面添加maven阿里源

// 新增阿里云仓库
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
// 新增springsource仓库
maven { url "http://repo.springsource.org/plugins-release" }
maven { url "https://repo.spring.io/plugins-release" }

编辑之后,repositories 内容如下

repositories {
			// 新增阿里云仓库
            maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
            // 新增springsource仓库
            maven { url "http://repo.springsource.org/plugins-release" }
            maven { url "https://repo.spring.io/plugins-release" }
			// mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
		    maven { url "https://repo.spring.io/milestone"}
	}

3.修改gradle-wrapper.gradle文件distributionUrl属性的值,改成引用本地下载的gradle-5.6.4-all.zip文件

#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
distributionUrl=file:///E:/GoogleChromeFileData/gradle-5.6.4-all.zip

gradle-wrapper.gradle最终内容

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
distributionUrl=file:///E:/GoogleChromeFileData/gradle-5.6.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

编译
1.在项目的根目录spring-framework-5.2.x找到gradlew.bat文件执行编译,或者在终端输入./gradlew :spring-oxm:compileTestJava命令进行编译,该命令在import-into-idea.md文件中有详细说明
在这里插入图片描述
输入./gradlew :spring-oxm:compileTestJava或者启动gradlew.bat文件,最终终端正常输出效果如下:
在这里插入图片描述
注意:git问题自行百度解决即可

2.将项目导入idea中,刷新gradle进行构建编译项目,最终效果如下
在这里插入图片描述
运行测试
在Spring源码基础上扩展一个test-demo模块,为了测试Spring的功能,需要在该模块引入Spring四个核心模块(core,context,expression, beans),同时我也引入了AOP模块

修改test-demo模块的bulid.gradle文件,添加对五个模块的依赖

dependencies {
    implementation 'junit:junit:4.12'
    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile(project(":spring-core"))
    compile(project(":spring-context"))
    compile(project(":spring-beans"))
    compile(project(":spring-expression"))
    compile(project(":spring-aop"))
}

为了测试Spring功能是否可以使用,在test-demo模块中,创建了一个BeansManage.xml文件,并注入了一个User Bean对象。
在这里插入图片描述
通过MainApp类对User Bean的获取,程序代码如下
在这里插入图片描述
运行MainApp程序,正常获取到IOC容器注入的User Bean,最终正常输出结果如下

> Task :test-demo:MainApp.main()
xiao mi

BUILD SUCCESSFUL in 10s

总结

如果大家看到这里,说明已经编译运行Sping源码成功了,给自己一个鼓励吧,真棒!!!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值