使用Idea搭建Spring源码阅读环境

1.将项目克隆到Idea

注意,现在Spring主分支的代码是Spring 6.x,因为目前Spring6还处于测试阶段,而通过官网可知,目前5.3.20才是稳定版本,所以我这里是将5.3.x作为主分支。

更改仓库的默认分支可以在仓库的管理界面设置

这一切办妥后,我们复制仓库链接,然后打开idea

点击Idea工具栏的VCS按钮,然后再点击如图所示:

然后我们再将刚才的url粘贴进去,点击clone就可以了

 

 2.构建项目

因为Spring用的Gradle来管理项目,所以idea会自动下载当前Spring版本所需要的Gradle版本。

Java开发这边很少使用到Gradle来构建项目,基本就是Maven,所以我们也不必再去下载一个全局的Gradle,配置环境变量啥的,我们直接让idea自己下载配置就行了。

如果,你非要自己配置,那么在项目目录下的./gradle/wrapper/gradle-wrapper.properties中可以查看当前Spring项目所需的Geadle版本。
 

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

distributionUrl这个参数的值就是所需的gradle版本

然后,我们还需要指定一下Spring的远程仓库,这里我们选择阿里云的镜像

首先,我们在项目目录中找到build.gradle这个文件,在repositories的值下面加上这两个镜像源

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

修改后如图所示:

再找到settings.gradle这个文件,也是在repositories加上这个镜像源

maven { url "https://maven.aliyun.com/repository/public" }

 修改后如图所示:

修改这两个文件后,就可以点击配置文件右上角的刷新符号,开始构建项目了。你也可以点击最上方的Build,然后静静的等待项目构建完成就行了。

所有模块被idea识别就代表构建成功

然后根据目录下的官方导入文档所说,我们需要在项目之前进行预编译:

我们点击idea由上级的gradle,然后先找到spring-core,点击如图所示的按钮进行预编译:

然后再对spring-oxm做同样操作

最后对整个项目进行编译:

然后静静的等待项目进行编译完成就行了。 

 3.进行测试

编译完成后,我们可以再项目目录下创建一个自己的模块,可以在我们阅读源码期间进行测试。

选择Gradle项目,然后选好名称后finish就行了: 

 

注意,坑爹的地方来了。

idea会自动给我们生成·build.gradle文件,其实就像与Maven项目的pom.xml,我们可以在里面引入Spring的相关模块进行测试,但是因为版本原因,引入的方式与网上很多的文档大有不同

网上大多数文章是像这样导入的:

dependencies {
    compile(project(":spring-context"))
    compile(project(":spring-instrument"))
    compile 'junit:junit:4.12'
    compile group: 'org.hamcrest', name: 'hamcrest-core', version: '1.3'
}

 但是idea生成的模板确实这样:

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

千万不要像网上的文章那样引入模块,因为现在Spring使用的Gradle版本早就升级到7.2.x了,所以之前的引入方式已经在高版本被弃用了,compile命令也已经被弃用,我们可以使用implementation来引入相关的模块,比如,我现在想要引入spring-context模块,那么我可以这样:
 

dependencies {
    implementation(project(":spring-context"))
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

然后我们就可以使用spring容器相关的API,进行测试了.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值