spring源码编译

源码学习的第一步:Spring源码编译
前期准备准备工作:
1、本机安装并配置好了git
2、本机安装并配置好了jdk,且jdk的版本至少是1.8 在这里插入图片描述
3、本机安装并配置好了 gradle,gradle也可以先不用安装配置,我这里是提前配置好的,版本是:6.8.3
在这里插入图片描述
备注:Gradle,也可以不用安装,在编译的时候根据源码提示按照对应版本的Gradle即可
4、Idea

前期工作准备完之后,开始进入正题:

一、获取Spring源码

推荐使用clone的方式将源码拉取到本地,最大的好处在于可以利用IDEA直接比较版本间的差异;如果下载zip包然后解压 进行编译可能会出现各种各样的问题
1、在任意磁盘路径下新建一个文件夹,名称随便取,如:spring_source_code
2、进入spring_source_code文件夹中,打开git命令行,输入以下命令:
使用github(国外服务器,克隆较慢)时,输入:
git clone https://github.com/spring-projects/spring-framework.git
使用gitee(国内服务器,克隆比较快,推荐使用),输入:
git clone https://gitee.com/mirrors/Spring-Framework.git
在gitee中选择版本,如下图所示:在这里插入图片描述
代码克隆(克隆完成后如下图所示):
在这里插入图片描述

二、添加阿里云镜像

在编译过程中,Spring会去自动下载一些依赖的包,默认使用的是官方的镜像,下载比较慢,所以我们提前添加好国内镜像,将下面这行代码粘贴到build.gradle文件中的repositories节点、以及settings.gradle文件中的reponsitories节点 下即可
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
记住是两个文件 !!!
代码如下:
build.gradle文件 :

repositories {
			maven { url "https://maven.aliyun.com/repository/public"}
						mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
		}

settings.gradle文件 :

pluginManagement {
	repositories {
		maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
		gradlePluginPortal()
		maven { url 'https://repo.spring.io/plugins-release' }
	}
}

注意:把maven { url “http://maven.aliyun.com/nexus/content/groups/public” } 这个配置放在最上面

三、预先编译spring-oxm模块

进入到下载好的代码的根路径中,打开命令行窗口,并切换到源码所在文件夹,执行以下命令
gradlew :spring-oxm:compileTestJava
回车,开车执行;
出现BUILD SUCCESS字样时说明构建成功,如下图所示
在这里插入图片描述
此时需要注意:如果出现了“BUILD SUCCESS”,但是也出现了上图中的最后一行代码,只需要做以下操作即可:
打开settings.gradle,注释掉:id “io.spring.ge.conventions” version “0.0.7” 这一行即可,如下图所示:
在这里插入图片描述
注释掉之后,再重新进入cmd执行:gradlew :spring-oxm:compileTestJava
出现“BUILD SUCCESS”之后,如下图所示:
在这里插入图片描述
至此,编译成功!!!

四、根据编译后的源码下载并安装对应的版本的Gradle

在完成对spring-oxm模块的编译后,会在当前目录生成一个.gradle文件夹,打开后可以查看对应的Gradle版本。
在这里插入图片描述
双击打开.gradle文件夹就能看到对应所需要的gradle的版本号
在这里插入图片描述
可以在这个网站上下载对应所需要的版本即可:https://gradle.org/releases/
安装好后记得配置Gradle的环境变量
新增 GRADLE_HOME 环境变量,指向Gradle解压目录
配置Path环境变量:新增 %GRADLE_HOME%\bin
之后测试是否安装成,在命令行中输入以下命令:gradle -v,查看是否正确输出了对应版本,如下图所示:
在这里插入图片描述

五、为安装好的Gradle配置国内镜像

进入Gradle安装目录,在init.d目录下新建一个init.gradle文件,并添加以下内容:

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

如下图所示:
在这里插入图片描述
在这里插入图片描述

六、将代码导入到IDEA中

在这里插入图片描述

七、构建整个项目

如果事先在idea中配置了gradle,idea会自动识别这是一个gradle项目,紧接着idea会进行自动构建;

idea构建的过程,时间比较,可以耐心等待一下;构建过程中会下一系列的jar文件 ,比较耗时的jar文件是:guave-28.2-jre-sources.jar;
导入idea成功,如下图所示:到

八、添加模块进行测试

右键工程名 —> new —> module
在这里插入图片描述
选择Gradle及Java
在这里插入图片描述
输入模块名称
在这里插入图片描述

点击next —> Finish 完成测试模块的创建

最后,添加一些必要的依赖,修改创建好的模块中的build.gradle文件,添加依赖(按需添加,这里是做测试的,先添加spring-context的依赖)

compile(project(":spring-context")) 

如下图所示:

在这里插入图片描述

到这里,就完成了整个spring的编译,并且创建了一个以后学习使用的新模块!!!

备注:在使用git clone https://gitee.com/mirrors/Spring-Framework.git 克隆代码时,拉取的是主分支(master分支)的内容,如果想切换成其它版本,可以在切换到其它版本,也可以不切换,不切换其它分支不会影响spring源码的学习!!!

如果切换spring源码的分支(以idea为例),可以参考如下图所示内容:
在这里插入图片描述
按照以上三个步骤就可以检出相对应的分支!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值