spring源码构建-IDEA2020.1构建Spring5.2.x源码

spring源码的构建并不是通过maven构建的,而且编译也不仅仅是通过javac编译的,比如spring AOP的编译就必须用到aspectj编译器。这些在以下都会一一讲解,是一个从新的spring源码文件到能完整跑起来的全构建流程。我构建的是spring5.2.x版本,jdk1.8,gradle5.6.4。之前尝试过构建spring5.3.x版本,但是在编译spring aop期间总是报错,可能是我下错了aspectj编译器包,但是之后我还是果断放弃了5.3.x版本的构建,因为这个版本需要jdk11,和我平时工作的项目jdk8冲突,切环境麻烦并且花了很长时间还没解决spring aop编译问题。有兴趣可以尝试下,如果构建成功了,希望可以一起交流交流。如果怕麻烦,目的很明确,就是去学习spring源码的,不想节外生枝,可以选择5.2.x版本照这个本文构建即可。祝大家更上一层楼!!!

1、下载spring源码

github下载地址:https://github.com/spring-projects/spring-framework
gitee下载地址:https://gitee.com/mirrors/Spring-Framework
我用的是gitee下载,因为github下载得太慢了!

2、查看spring源码推荐版本

其实就算我们不配置gradle环境,idea在编译spring源码得时候,还是会自动得下载默认支持得gradle包,这个配置在Spring源码根目录下的gradle包的wrapper中
在这里插入图片描述
让我们来修改这个文件
在这里插入图片描述

上述修改后的地址就是我下载gradle存放的地址,注释掉原有地址,防止自动下载(那叫一个慢)。注:这边配的就是zip包,不是解压后的文件夹,不用惊讶!这个配置的地址里不要有空格之类地特殊字符,反正我试了很多次,空格字符会导致后面包不规范字符的错误,进行unicode转码都不管用,反正就正常配置就好,别骚

3、下载gradle,全局配置环境

官方网站:https://gradle.org/install/#manually
急速通道:https://services.gradle.org/distributions/
不用想,我是那种等待超过五分钟就会烦躁的人,我选择急速通道。
下载下来后,我是放在了D盘下:D:\gradle-5.6.4-bin.zip
解压后:D:\gradle-5.6.4

4、配置环境变量和仓库源

(1)配置环境变量
新建变量:GRADLE_HOME ,gradle总目录
在这里插入图片描述

新建变量:GRADLE_USER_HOME ,自定义的Gradle仓库目录(在gradle-wrapper.properties文件中需要),我是在gradle下建了个repository文件夹,你可以放在自己想放的地方。
在这里插入图片描述

添加变量 :将gradle的bin放入path中,以便系统直接读取命令并执行
在这里插入图片描述
配置环境变量就完成了,其实这个时候gradle环境就已经配置好了,我们来验证下,cmd出黑窗口后,执行gradle -v,如下:
在这里插入图片描述

(2)配置gradle仓库源
默认是用的国外的数据源,下载那叫一个慢,还极有可能因为慢导致失败。所以,我们配置国内数据源。
在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置。

allprojects {
    repositories {
        maven { url 'file:///D:/gradle-6.8.3/repository'}
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
        mavenCentral()
    }

    buildscript { 
        repositories { 
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

repositories 中写的是获取 jar 包的顺序。先是本地的 Maven 仓库路径;接着的 mavenLocal() 是获取 Maven 本地仓库的路径,应该是和第一条一样,但是不冲突;第三条和第四条是从国内和国外的网络上仓库获取;最后的 mavenCentral() 是从Apache提供的中央仓库获取 jar 包。

5、配置spring源码的仓库源

在源码的根路径找到build.gradle文件,在repositories配置项中加入下面的代码,修改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" }

修改后如下:
在这里插入图片描述

6、进入构建源码

进入源码根目录,直接运行gradlew.bat(windows下双击),其实就是在下载需要的jar包,耐心等待即可,需要很长时间,下载完成后,运行框会自动消失
在这里插入图片描述
运行中:
在这里插入图片描述

接下来就只要按照spring源码根目录下import-into-idea.md文件的指引去做就可以了。
在这里插入图片描述
第一步:进入spring根目录,进入黑窗口或者git窗口,运行 ./gradlew :spring-oxm:compileTestJava ,成功后如下图
在这里插入图片描述
然后就可以将spring源码导入到idea中了
在这里插入图片描述
在这里插入图片描述
导入idea后,第一件事就是将gradle环境修改成我们自己配置的gradle,如下图
在这里插入图片描述
到这里,千万不要操之过急
在这里插入图片描述

然后点build project,构建项目。
在这里插入图片描述
这个也需要些时间的,成功后,如下。
在这里插入图片描述
如果以上步骤都成功了,那就表明你现在容器服务可以用了,那就创建个demo跑一下吧。(到这里AOP服务还是不能使用的,若要使用还得继续配置)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7、顺便将运行AOP的环境给配置了

  1. 下载AspectJ编译包:https://www.eclipse.org/aspectj/downloads.php
    在这里插入图片描述
  2. 运行下载的jar包,在黑窗户运行 java -jar aspectj-1.9.6.jar,就像运行springboot项目一样。
    在这里插入图片描述
  3. 回车后会出现安装界面,一直点下一步就行了,但是需要选择jdk目录,安装目录。这些目录自己选择即可。
    在这里插入图片描述
    在这里插入图片描述
  4. 安装完成后来到idea进行配置

在这里插入图片描述

在这里插入图片描述
选择spring:spring-aop.main表示这个项目使用Ajc编译,如果这个项目下有其他编译方式,请自行删除。一般没有
在这里插入图片描述
同样的,spring.spring-aspects.mian同样操作,得到最终结果如下图
在这里插入图片描述
这时候切换编译器,是项目支持Ajc编译
在这里插入图片描述
到这里其实就完成了,接下来就看看能否正常使用AOP服务了。首先,在demo项目中加入AOP的依赖支持
在这里插入图片描述
接着,在启动配置类上加上@EnableAspectJAutoProxy,表示运行时加入AOP相关功能。
在这里插入图片描述
接下来就是再次跑一下了(仍然可以正常运行,那就没问题了),如果实在不放心,可以写个切面类,测试下AOP功能。
在这里插入图片描述
到这里就结素了,有问题留言讨论哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值