这一阵子在读spring源码,但是网上的文章,构建spring源码大都有问题,导致我构建源码的时候出现了很多问题,所以我自己重新构建了一下。

本机环境

win10 + jdk1.8.0_151 + IntelliJ IDEA 2019.1.3spring使用的是5.0版本(下面介绍的方法在5.0和5.1下都可以成功)

源码构建

  1. 在cmd命令框下进入源码目录,使用命令: gradlew :spring-oxm:compileTestJava

网上很多文章都说这里要下载gradle,其实是可以不用的,输入这个指令之后会自己下载的(亲测),截图如下(中间可能会出错,十有八九是网络问题,建议挂vpn,或者多试几次)

  1. 最好再预编译一下 gradlew :spring-core:compileTestJava
  2. 打开Intellij IDEA,依次选择File -> New -> Project from Existing Sources -> spring项目根目录 -> 选择 build.gradle,然后如下图,一路ok即可。
    点击完finish之后会要等待一段时间,看个人网速,大概20分钟吧,构建成功后的结果如下图所示,如果中间有什么问题就直接点击idea左边的刷新试试(这里我没有出过问题..)。
    其实到了这一步已经差不多完成了,只不过后面如果要使用到spring源码还得接着往下看
  3. 新建module:
 添加spring-context依赖:
 新建MyConfig类和Main类用来测试
 ```java
 @Configuration
 public class MyConfig {
 
 }

 public class Main {
 	public static void main(String[] args) {
 		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(MyConfig.class);
 		System.out.println(ac);
 	}
 }

点击运行,此时会出现错误如下,原因是spring-context中没有添加spring-instrument依赖


3. ![](./assets/1596509440296-0413f80e-bad7-46ee-befb-9fbfd0e2dfd1.jpeg)
只需要在spring-context模块中的gradle配置文件中添加依赖即可:![](./assets/1596509438533-ad0b85e1-2c9f-402b-b0a9-c363b7697990.jpeg)
此时再次运行即可成功:![](./assets/1596509438540-69efe5b5-0119-4363-bd93-97f00a4e2e6a.jpeg)
3. **注意**:后面如果需要使用aspects模块的时候,需要先将这个模块unload。



spring-framework\gradle\wrapper\gradle-wrapper.properties 记录了对应gradle版本

编译的过程中报错:需要修改build.gradle中的:
```kotlin
compileKotlin {
		kotlinOptions {
			jvmTarget = "1.8"
			freeCompilerArgs = ["-Xjsr305=strict"]
			apiVersion = "1.4"
			languageVersion = "1.4"
		}
	}

遇到报错:

需要在自己的模块中添加依赖spring-instrument:

dependencies {
    compile(project(":spring-context"))
    compile(project(":spring-instrument"))
}

2021版本idea 编码可参考:https://blog.csdn.net/chuanchengdabing/article/details/115330718