Spring5.1.x源码编译是个没有技术含量,但是很难成功的,折腾了好久,电脑还蓝屏。
学习Java,肯定要学Spring框架,学了Spring,找工作肯定问框架源码,学源码你得自己会编译,不然写个注释还得粘贴出来,总的来说,你得学会源码编译。
第一步:下载Spring源码+Gradle
源码地址:https://github.com/spring-projects/spring-framework。选择具体的 branches
Spring5.1.x https://github.com/spring-projects/spring-framework.git 随你git clone,还是download zip.
1.1 观察文档
下载完成后的文件,打开 spring-framework-idea\gradle\wrapper\gradle-wrapper.properties 文件夹
发现里面有 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip // gradle 版本
1.2 下载 gradle 版本
gradle地址: https://gradle.org/releases/
版本最好一致,版本不一致,有的成功了,反正我是失败了。
第二步:编译方式选择
Spring 提供三种编译代码的方式,gradle方式,IDEA方式,eclipse方式
在下载的源码中有三个文件:分别教你如何编译,但是我都失败了。
2.1 gradle 添加环境变量,path里面添加%%/bin,gradle -v 查看版本号,gradlew build 就可以了,反正我是不可以,还蓝屏
2.2 eclipse不想折腾了,用的也不多。
第三步:IDEA方式
3.1 idea导入工程选择 gradle,导入下载的代码
3.2 修改 gradle
3.3 更改镜像源(可选) 推荐第一次不要改,如果不能的话再修改
源码下面有个 build.gradle 文件夹。
buildscript {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
plugins{
原来的配置。。。。。。
}
allprojects {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
位置不能错
工程会进行自动编译了,时间可能会长,可能会短。
第四步: 编译源码
4.1 点击IDEA右上方的gradle,过程已经build好,然后点击 spring-core,按下图一次点击,编译 compileTestJava
core 是为了添加两个jar包,(Spring源码防止包冲突,所以剔除了)。
4.2 spring-oxm 也是一样
4.3 spring-aspects 右击忽略,我卡这边好久,因为spring的AOP用的aspectCJ这个包,不忽略无法编译成功.
4.4 最后编译全部,按照上面两个图。
第五步:测试
新建module,选择maven,你也可以选择 gradle。我maven用的熟悉,(gradle写Android,几年不写了,忘了)
工程都会建吧。小白不用学源码,大神不屑看我,就我这种半桶水的才需要看源码。
更改依赖,不然maven里面还是maven仓库里面(file read only),不是源码.
5.1 点开
5.2 选择源码 classes sources 把红色的减去(一般是你的maven仓库地址),加上你需要的。
5.3 好了 断点进去,可以编辑,如果需要成功,还是 gradle-> 指定包 -> jar 编译的
不保证,你们都可以成功,我看了很多视频很多博客折腾了很久,gradle 看脸,
需要编译好的源码,可以联系我,但是不建议,因为很多依赖还是本机装的。
第六步:最重要的步骤:
当你修改完源码之后,再断点调试的时候,位置变了,断点的指向乱七八糟的,这时候,build spring 那一步,很快的,