最近想研究下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官网,修改为阿里云的地址即可(我自己的解决办法)