一、spring源码编译
1、spring源码下载
2、gradle
(1)查看spring源码编译所需的gradle版本
(2)下载对应版本的gradle
(3)把下载的gradle放在两个位置
a.复制到如下目录中
gradle-wrapper.properties文件做以下修改
说明:为什么要这么改,主要是编译时需要远程下载,改成这样就是从当前目录中加载,这就是为什么要复制下载的gradle在这个目录的原因。
b.把压缩包解压到想安装的目录
(1)在gradle-5.6.4文件夹内建一个.gradle文件夹(注意,前面有个小点)
(2)在.gradle文件夹创建一个init.gradle(内容如下,忘了是借用哪位大佬的了,有谁知道,知道的记得提醒我一下,怪不好意思的)
allprojects{
repositories {
mavenLocal()
maven { url "https://maven.aliyun.com/nexus/content/groups/public/"}
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
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://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_JCENTER_URL }
maven { url ALIYUN_GOOGLE_URL }
maven { url ALIYUN_GRADLE_PLUGIN_URL }
}
}
(3)配置gradle的环境变量
GRADLE_HOME E:\software\gradle\gradle-5.6.4\bin
GRADLE_USER_HOME E:\software\gradle\gradle-5.6.4\.gradle
3、文件修改(build.gradle和settings.gradle)
编译的时候有些文件需要去下载,但默认是国外的服务器下载,速度很慢,可能失败。全改成阿里的仓库。
a.build.gradle
(1)修改repositories
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
}
(2)注释掉两处,不然会报错(貌似spring源码不会同时存在这两个,没有就不用管)
在build.gradle中
在settings.gradle中
b.settings.gradle
加入
maven { url 'https://maven.aliyun.com/repository/public/' }
4、校验jdk版本
jdk的版本是要求1.8及以上,但是gradle版本对最新的jdk并不支持,一般比1.8高就行,千万别选最新的jdk版本就行。
在电脑的环境变量配置JAVA_HOME和在path中配置bin所在位置。
5、编译
打开控制台,切换到spring源码所在目录,并运行以下命令
gradlew :spring-oxm:compileTestJava
6、成功
7、导入IDEA
a.IDEA设置成和你自己安装的环境变量的版本,为了避免不必要的麻烦。
b.导入IDAE
等待编译完成
8、测试方法
(1)建个module
(2)导入依赖
testImplementation group: 'junit', name: 'junit', version: '4.13.2'
compile(project(":pring-context"))
(3)制作一个bean,通过注解的方式加入容器中
(4)创建启动类,获取bean,并调用其方法
(5)成功输出
二、遇到的问题:
问题1
[ant:javac] 警告: [options] 未与 -source 8 一起设置引导类路径
解决方案:把jdk换成1.8就行(JAVA_HOME环境变量变成1.8的安装路径)