编译Spring源码省心小贴士

主要参考文档

国外:

国内:

必要操作

如果导入 Idea,需要在 Spring-Framework 根目录下执行以下脚本:

gradlew :spring-oxm:compileTestJava

spring-core 模块下执行

gradle cglibRepackJar
gradle objenesisRepackJar

提速优化建议

Spring 下载提速

git clone https://gitee.com/mirrors/Spring-Framework.git

JDK 下载加速

推荐 清华大学镜像

指定本地 gradle-bin.zip

修改 Spring-Framework 项目目录下的 gradle\wrapper\gradle-wrapper.properties 文件

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
## distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
distributionUrl=file\:///d\:/lib/gradle/gradle-6.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

这样可以免去多次下载gradle的功夫。
download gradle

依赖下载慢的问题

修改 Spring-Framework 项目目录下的 build.gradle 文件

repositories {
      maven { url "https://maven.aliyun.com/repository/public" }
      mavenCentral()
      maven { url "https://repo.spring.io/libs-spring-framework-build" }
      maven { url "https://repo.spring.io/milestone" } // Reactor
}

增加阿里云国内镜像,下载速度蹭蹭蹭~ 阿里云仓库指南,见下图(更新与2020-09-05)

定位“个性化”问题

gradlew build --info


通过命令行的方式,可以看到报错找到自己编译过程的特殊报错问题,“对症下药”。

构建成功标志

  • 如果上一节 gradlew build 执行成功,那么此处应该也能刷新成功并出现一个个的子任务
  • 如果依赖没有什么改变,可以选择开启“离线模式”,构建速度会更快!

运行debug遇到常见错误


CoroutinesUtils 是 Kotlin 的一个工具类。
Spring-Framework\spring-core\kotlin-coroutines\build\libs\kotlin-coroutines-5.3.0-SNAPSHOT.jar 添加为 spring.spring-core.main 的依赖,详细参考 https://www.bilibili.com/read/cv6134966/


右击 spring-instrument\src\test\java 文件夹,执行Run 'All Tests',在 spring-instrument 生成一个 out 文件夹 详细参考如何编译spring的源码

posted @ 2020-09-05 16:51  极客子羽  阅读(524)  评论(0编辑  收藏  举报