Spring5源码 - 构建源码环境

客官°小女子只卖身不卖艺 2022-12-04 01:25 372阅读 0赞

文章目录

  • 开发环境
  • git clone 源码
  • gradle调整 [可选]
    • gradle离线安装
    • gradle中央仓库地址调整
  • 执行 gradlew.bat
  • 导入到IEDA
    • gradlew :spring-oxm:compileTestJava
    • 导入到IDEA
    • 编译和 运行Testst设置为 IntelliJ IDEA (建议)
  • 测试验证
    • 新建子模块
    • 添加依赖
    • 编写代码 加载Bean测试
    • 运行测试
  • Gradle 下载的依赖包存储的位置
  • 问题
  • 其他可参考

在这里插入图片描述


开发环境

IDEA 2020.2.1 + OpenJDK8U-jdk_x64_windows_hotspot_8u265b01 + gradle-6.5.1-bin.zip

遵循官方指导文档


git clone 源码

源码地址: https://github.com/spring-projects/spring-framework

在这里插入图片描述
copy地址,待会要用

这里我将放到了 D:\workspace

打开 git bash ,执行如下命令 git clone https://github.com/spring-projects/spring-framework.git
在这里插入图片描述

等一会即可,如下所示

在这里插入图片描述

官方指导手册

在这里插入图片描述

https://github.com/spring-projects/spring-framework/wiki/Build-from-Source


gradle调整 [可选]

gradle离线安装

打开 D:\workspace\spring-framework\gradle\wrapper\gradle-wrapper.properties

  1. distributionBase=GRADLE_USER_HOME
  2. distributionPath=wrapper/dists
  3. distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
  4. zipStoreBase=GRADLE_USER_HOME
  5. zipStorePath=wrapper/dists

gradle会去 distributionUrl对应的地址下载gradle压缩包,如果网络不好的话,可以提前现在好一个离线包

在这里插入图片描述

修改 distributionUrl,如下

  1. distributionUrl=file\:///D\:/Soft/gradle-6.5.1-bin.zip

安装目录: windows系统默认GRADLE_USER_HOME 为 c:\Users\用户\.gradle

在这里插入图片描述


gradle中央仓库地址调整

国内环境的话,建议调整一下gradle的中央仓库。

找到 build.gradle

在这里插入图片描述

打开 285行 添加阿里云地址

  1. maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'}
  2. maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

执行 gradlew.bat

windows环境下 gradlew.bat 就是我们需要执行的脚本

第一次要下载好多依赖,速度取决于你的网速,如果失败的话,多执行几次,基本都是可以成功的。

在这里插入图片描述


导入到IEDA

在这里插入图片描述

https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md

根据提示来操作即可

  1. Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
  2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
  3. When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules)
  4. Code away

gradlew :spring-oxm:compileTestJava

第一步 gradlew :spring-oxm:compileTestJava

在这里插入图片描述


导入到IDEA

在这里插入图片描述

选择你拉取的spring源码,方式选择build.gradle

在这里插入图片描述

等待index完成,需要下载jar包 ,不是很快(我用了好几次,耗时好几个小时),如果期间出错,多试几次。

在这里插入图片描述

点击刷新按钮,如上所示,基本可以认定为构建成功。


编译和 运行Testst设置为 IntelliJ IDEA (建议)

编译完成后建议 将编译和 运行Testst设置为 IntelliJ IDEA , 默认的Gradle特别慢。
在这里插入图片描述

在这里插入图片描述

  1. C:/Users/artisan/.gradle/wrapper/dists/gradle-6.5.1-bin/b4shxvjcpfsjxpjuxxiaa7cyh/gradle-6.5.1

这个地方选OPEN JDK11 会有问题,请见问题记录


测试验证

新建子模块

在这里插入图片描述
选择 gradle

在这里插入图片描述

随便建立一个子module的名称

在这里插入图片描述

添加依赖

  1. compile(project(":spring-context"))

在这里插入图片描述


编写代码 加载Bean测试

在这里插入图片描述

  1. package com.artisan;
  2. import org.springframework.context.annotation.ComponentScan;
  3. import org.springframework.context.annotation.Configuration;
  4. @Configuration
  5. @ComponentScan("com.artisan")
  6. public class AppConfig {
  7. }
  8. package com.artisan;
  9. import org.springframework.stereotype.Component;
  10. @Component
  11. public class ArtisanService {
  12. }
  13. package com.artisan;
  14. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  15. public class ArtisanTest {
  16. public static void main(String[] args) {
  17. AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
  18. ArtisanService bean = ac.getBean(ArtisanService.class);
  19. System.out.println(bean.getClass().getName());
  20. }
  21. }

运行测试

在这里插入图片描述

至此,spring5.1.x的源码编译导入idea就算完成了。


Gradle 下载的依赖包存储的位置

Windows系统默认下载到:C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1
Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1


问题

  1. D:\workspace\spring-framework\spring-core\src\main\java\org\springframework\core\metrics\jfr\FlightRecorderStartupEvent.java:19:15
  2. java: 程序包jdk.jfr不存在

最开始使用的OpenJDK jdk-11.0.8.10-hotspot 更换JDK为 OpenJDK8U-jdk_x64_windows_hotspot_8u265b01

【1】gradle JVM
在这里插入图片描述

【2】 项目编译环境 的JDK
在这里插入图片描述

在这里插入图片描述

重新编译,即可解决。

参考子路老师的博客 ,https://blog.csdn.net/java\_lyvee/article/details/107300648 ,感谢大佬分享。


其他可参考

https://www.yuque.com/docs/share/17a9d955-2153-4113-8bbb-79c35e274ed0?#

发表评论

表情:
评论列表 (有 0 条评论,372人围观)

还没有评论,来说两句吧...

相关阅读

    相关 tomcat环境构建

    前言 tomcat作为Java项目运行的容器,基本上算是目前使用最多的容器了吧,因此对tomcat的容器的研究很有必要,不仅是学习容器本身的设计思想,更能通过源码的调试和