01. spring 源码环境搭建【ASIA读源码系列】
本文安装前提:
IDEA 版本:2020.02 【很重要】
spring 5.2.0
强烈建议把IDEA升级成最新版本2020.02,这个很重要,之前自己用的是IDEA 2017版本,spring导入idea时各种报错,搞了一天也没搞定,后来升级到2020.02就一路顺畅。根本原因是IDEA版本太老的话,其中gradle各种插件对应不上。
一、环境准备
1.1 需要java环境 >= jdk8;
1.2 下载spring源码
地址:
https://github.com/spring-projects/spring-framework/tree/v5.2.0.RELEASE
下载对应版本,本次下载的5.2.0(可以直接git clone或者下载对应的zip)
本次下载了5.2.0 zip
1.3、gradle安装;
1.3.1 https://gradle.org/releases/
下载对应版本,最好spring目录下编译gradle保持一致
cat /gradle/wrapper/gradle-wrapper.properties
1.3.2 解压安装包并配置环境
unzip gradle-5.6.2-bin.zip
1.3.3 配置环境变量
vi ~/.bashrc
添加内容如下:
GRADLE_HOME=/your_Path/gradle-5.6.2
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
环境
source ~/.bashrc
查看安装是否成功,显示如下,则为安装成功
gradle -version
至此,gradle安装完成。
二、spring源码编译
2.1 编译前文件修改
2.1.1 修改build.gradle中repositories,添加阿里源,方便后面编译时加速。
maven {url "https://maven.aliyun.com/nexus/content/groups/public"}
2.1.2 修改spring工程目录下settings.gradle。
maven {url 'https://maven.aliyun.com/repository/gradle-plugin'}
2.1.3 修改buildSrc/build.gradle,添加阿里源,方便后面编译时加速。
cd spring-framework-5.2.0/buildSrc
vi build.gradle
具体如下
maven {url 'https://maven.aliyun.com/nexus/content/repositories/google/'}
maven {url 'https://maven.aliyun.com/nexus/content/groups/public'}
maven {url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven {url 'https://maven.aliyun.com/repository/gradle-plugin'}
/*mavenCentral()
gradlePluginPortal()*/
2.2 spring编译
可以参考spring目录下导入idea说明:
cat import-into-idea.md
分别编译spring-oxm及spring-core
./gradlew :spring-oxm:compileTestJava
./gradlew :spring-core:compileTestJava
编译完成如图所示:
2.3 导入idea
导入方法如下:
Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
至此,等待IDEA编译,需要一段时间,编译成功提示如下。
三、验证编译是否成功
关键把IDEA升级
错误3
`Error:No such property: GradleVersion ``for` `class: JetGradlePlugin`
解决办法修改:
gradle->wrapper下gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip
maven {url ‘https://maven.aliyun.com/nexus/content/repositories/google/’}
maven {url ‘https://maven.aliyun.com/nexus/content/groups/public’}
maven {url ‘https://maven.aliyun.com/nexus/content/repositories/jcenter’}
maven {url ‘https://maven.aliyun.com/repository/gradle-plugin’}
repositories {
maven { url “https://repo.spring.io/plugins-release” }
maven {url “https://plugins.gradle.org/m2/”}
}
0.9.15
引用:
https://www.cnblogs.com/garfieldcgf/p/12591157.html
https://juejin.im/post/6854573219827941390