考虑到很多同学在学习翔仔《剑指Java自研框架,决胜Spring源码》的课程时,是使用Windows来来编译Spring源码的,针对这种情况,为了整个流程变得清晰,翔仔在这里尝试从0开始,使用Windows来教大家如何编译Spring源码。
下载并安装Idea CE
首先Idea是课程学习的基础,是必不可少的,这里咱们走比较经济的路线,使用免费的idea社区版来进行学习,当然,大家也可以下载收费的idea,这样在搭建web项目的时候,更加方便。
官网地址
https://www.jetbrains.com/idea/download/
下载完成后,双击安装,由于安装过程比较简单,网上也有大量的博客,这里就不进行介绍了。
下载并安装Git
这一步是后续使用gradlew脚本的时候必须的,所以得确保在cmd里输入git能被响应(git安装的时候,会有植入cmd的选项,如果选择了就不用去配环境变量了,git安装软件会自己帮配,由于比较简单,就不做过多介绍了)
或则大家也可以在我们的代码库把Spring源码直接拉下来。由于咱们不需要提交Spring代码,因此可以直接使用https的方式将代码的zip包下载到本地,避免了git拷贝时的龟速。
下载完成后,将Spring源码解压到自定义的路径里。
4. 下载和配置JDK8(与Spring5的兼容性最好)
这一步是码农必知必会的,网上也有大量的教程,就不展开讲解了。
5. 配置idea和jdk
将idea的project structure配置上本地安装好的jdk
网上充斥大量编译源码的教程,各种hack,但是翔仔建议还是以官方文档为准,那个才是最贴切的。
相关的网址在
https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md
咱们需要做的事情如下:
想要执行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
如果编译成功,或者试了好多次都是有超时问题,则可以直接打开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即可。
之后,就可以和课程一样愉快地进行后续的开发了。