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

1.将项目克隆到Idea

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

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

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

点击Idea工具栏的VCS按钮,然后再点击如图所示:
使用Idea搭建Spring源码阅读环境_第1张图片

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

 使用Idea搭建Spring源码阅读环境_第2张图片

 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'}

修改后如图所示:

使用Idea搭建Spring源码阅读环境_第3张图片

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

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

 修改后如图所示:

使用Idea搭建Spring源码阅读环境_第4张图片

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

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

使用Idea搭建Spring源码阅读环境_第5张图片

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

使用Idea搭建Spring源码阅读环境_第6张图片

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

使用Idea搭建Spring源码阅读环境_第7张图片

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

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

使用Idea搭建Spring源码阅读环境_第8张图片

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

 3.进行测试

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

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

 使用Idea搭建Spring源码阅读环境_第9张图片

注意,坑爹的地方来了。

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,进行测试了.

你可能感兴趣的:(Spring源码,intellij-idea,spring)