Spring源码编译遇到的坑(5.0.x)

本文讲述了作者在研究Spring源码过程中遇到的编译问题,包括下载Gradle、配置阿里云仓库以加快依赖下载,并分享了如何处理报错和修改配置的过程。

最近想研究下spring的源码,但是编译过程一直遇到问题,网上找了好久都没有一篇文章能完全解决我遇到的问题,最后在结合了几篇比较靠谱的文章在加上我的一些灵感,总算是编译成功了,于是决定把踩坑的经验写下来以备不时之需。

1.Spring源码下载

git地址 众所周知的原因,下载比较费劲,多试试就可以了

2.配置

2.1 下载gradle

spring使用gradle构建,需要下载gradle,具体版本需要根据\spring-framework\gradle\wrapper\gradle-wrapper.properties目录下的配置来确定,目前5.0.x对应版本为4.4.1
在这里插入图片描述
gradle下载地址:gradle
在这里插入图片描述
下载解压后配置gradle环境变量:
在这里插入图片描述

在这里插入图片描述
新建系统环境变量GRADLE_HOME,指向gradle安装根目录
在这里插入图片描述
在Path下增加%GRADLE_HOME%\bin
在这里插入图片描述
在这里插入图片描述
配置好后打开cmd命令输入:gradle -v在这里插入图片描述
配置成功
配置gradle使用阿里云仓库,在gradle安装目录下找到init.d目录,新建init.gradle文件,配置如下:

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

2. 编译

使用Idea导入spring项目,切换到分支5.0.x

2.1修改build.gradle配置

这个配置在根目录下

在这里插入图片描述
修改1:buildscript配置

	repositories {
			gradlePluginPortal()
			//把原来的内容替换为阿里云
			maven{ url 'https://maven.aliyun.com/repository/public' }
			maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
		}
		//增加这个allprojects 配置
		allprojects {
			repositories {
				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'}
	
			}
		}

修改2:configure(allprojects) 配置

//找到configure(allprojects)标签的repositories内容,将里面的地址替换为阿里云
	repositories {
		maven {
			url 'https://maven.aliyun.com/repository/spring-plugin'
		}
		maven {
			url 'https://maven.aliyun.com/repository/public/'
		}
	}

修改3:\spring-framework\gradle\wrapper\gradle-wrapper.properties
把distributionUrl指向自己本地下载的gradle,要不然会先去官网下载gradle
在这里插入图片描述

2.2 开始编译

打开cmd命令窗口,进入spring-framework根目录,执行命令:gradle :spring-oxm:compileTestJava
等待下载依赖…

3.报错处理

如果遇到某个插件或者包下载不了,而且地址是指向spring官网的,说明阿里云指向配置有问题,从新捋下要修改的配置,如果还报错,那就在项目中搜一下报错指向的地址,看看哪里配置的指向了spring官网,修改为阿里云的地址即可(我自己的解决办法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值