为了账号安全,请及时绑定邮箱和手机立即绑定

使用Windows的同学先看这里

考虑到很多同学在学习翔仔《剑指Java自研框架,决胜Spring源码》的课程时,是使用Windows来来编译Spring源码的,针对这种情况,为了整个流程变得清晰,翔仔在这里尝试从0开始,使用Windows来教大家如何编译Spring源码。

  1. 下载并安装Idea CE
    首先Idea是课程学习的基础,是必不可少的,这里咱们走比较经济的路线,使用免费的idea社区版来进行学习,当然,大家也可以下载收费的idea,这样在搭建web项目的时候,更加方便。
    官网地址
    https://www.jetbrains.com/idea/download/
    图片描述
    下载完成后,双击安装,由于安装过程比较简单,网上也有大量的博客,这里就不进行介绍了。

  2. 下载并安装Git
    这一步是后续使用gradlew脚本的时候必须的,所以得确保在cmd里输入git能被响应(git安装的时候,会有植入cmd的选项,如果选择了就不用去配环境变量了,git安装软件会自己帮配,由于比较简单,就不做过多介绍了)

图片描述
图片描述

  1. 下载Spring源码
    直接去官方的github库下载,
    https://github.com/spring-projects/spring-framework
    打开github后,点击下方的标签tag,强烈建议大家选择和教程一样的稳定的5.2.0 release版本,
    图片描述

或则大家也可以在我们的代码库把Spring源码直接拉下来。由于咱们不需要提交Spring代码,因此可以直接使用https的方式将代码的zip包下载到本地,避免了git拷贝时的龟速。
图片描述
下载完成后,将Spring源码解压到自定义的路径里。
4. 下载和配置JDK8(与Spring5的兼容性最好)
这一步是码农必知必会的,网上也有大量的教程,就不展开讲解了。
图片描述
图片描述
5. 配置idea和jdk
将idea的project structure配置上本地安装好的jdk
图片描述
图片描述
图片描述

  1. 配置idea和git

图片描述

网上充斥大量编译源码的教程,各种hack,但是翔仔建议还是以官方文档为准,那个才是最贴切的。
相关的网址在
https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md
咱们需要做的事情如下:

  1. 使用Gradle来预编译spring-oxm
    Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。
    Gradle的子项目工具Gradle Wrapper的作用就是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。
    去到解压的spring源码目录下,就会看到Spring已经自带了gradlew.bat这个Gradle Wrapper脚本文件。
    图片描述

想要执行bat文件,可以通过命令行的方式先打开当前目录,
图片描述
图片描述

为了使得GradleWrapper更快连接服务器,可以修改其镜像
图片描述
在首行即plugins上方,buildscript里面加入

	repositories {
        maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
    }

图片描述
在 resolutionStrategy的下方,configurations.all的上方加入

		repositories {
			maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
        	maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
			mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
		}

图片描述

之后执行指令预编译Spring源码等待编译完成(耗时几十分钟),多数情况下的报错是因为超时引起的,只能不断重试,如果期间报错,则需要将错误贴到百度或者谷歌上解决,提前锻炼下解决问题的能力。因为咱们之间的环境不同,所以有可能遇到的异常也不同。(如果实在解决不了,或者编译成功了,直接继续看下面)

gradlew.bat :spring-oxm:compileTestJava

图片描述

图片描述

PlanB

如果编译成功,或者试了好多次都是有超时问题,则可以直接打开idea,由于idea自带Gradle插件(也可以额外安装配置上)先将项目导入
图片描述

图片描述
直接在idea上操作,如果导入的时候报某些jar下载超时。
图片描述
https://plugins-artifacts.gradle.org/com.github.jengelman.gradle.plugins/shadow/5.2.0/b748da66d6f11acef435e1f2e95151dab902bb2de23fc8af575b86237d6ba6c8/shadow-5.2.0.jar
可以直接点击该jar的链接尝试下载,往往直接下载虽然速度比较慢,但是至少不会超时(可以使用迅雷等断点续传工具下载)
下载完成后,需要找到Gradle默认保存的repository路径,具体可以打开idea->setting->Build, Execution, Deployment ->Gradle->Gradle user home 去找到相关的路径
图片描述

随后,去到.gradle目录下面的caches\modules-2\files-2.1目录中,按照url路径进入目录里,将下载的jar包拷贝到里面。
比如这里是
https://plugins-artifacts.gradle.org/com.github.jengelman.gradle.plugins/shadow/5.2.0/b748da66d6f11acef435e1f2e95151dab902bb2de23fc8af575b86237d6ba6c8/shadow-5.2.0.jar
就将shadow-5.2.0.jar放到
.gradle\caches\modules-2\files-2.1\com.github.jengelman.gradle.plugins\shadow\5.2.0\b748da66d6f11acef435e1f2e95151dab902bb2de23fc8af575b86237d6ba6c8\
里。
图片描述

针对于被迫选择PlanB的,也可以在原来的CMD路径下面执行

gradlew.bat :spring-oxm:compileTestJava

重新编译。之后再点击刷新按钮reimport项目就可以(如果先前已成功,则直接在idea里refresh就好了)。
图片描述
图片描述
图片描述
待项目编译完成后,从Project Structure里移除spring-aspects模块,右键spring-aspects模块->remove->unload即可。
图片描述
之后,就可以和课程一样愉快地进行后续的开发了。

图片描述

点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
4475
获赞与收藏
2139

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消