这一阵子在读spring源码,但是网上的文章,构建spring源码大都有问题,导致我构建源码的时候出现了很多问题,所以我自己重新构建了一下。
本机环境
win10 + jdk1.8.0_151 + IntelliJ IDEA 2019.1.3spring使用的是5.0版本(下面介绍的方法在5.0和5.1下都可以成功)
源码构建
- 在cmd命令框下进入源码目录,使用命令:
gradlew :spring-oxm:compileTestJava
网上很多文章都说这里要下载gradle,其实是可以不用的,输入这个指令之后会自己下载的(亲测),截图如下(中间可能会出错,十有八九是网络问题,建议挂vpn,或者多试几次)
- 最好再预编译一下
gradlew :spring-core:compileTestJava
: - 打开Intellij IDEA,依次选择
File -> New -> Project from Existing Sources -> spring项目根目录 -> 选择 build.gradle
,然后如下图,一路ok即可。点击完finish之后会要等待一段时间,看个人网速,大概20分钟吧,构建成功后的结果如下图所示,如果中间有什么问题就直接点击idea左边的刷新试试(这里我没有出过问题..)。其实到了这一步已经差不多完成了,只不过后面如果要使用到spring源码还得接着往下看 - 新建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