Spring5源码 - 构建源码环境 客官°小女子只卖身不卖艺 2022-12-04 01:25 190阅读 0赞 ### 文章目录 ### * 开发环境 * git clone 源码 * gradle调整 \[可选\] * * gradle离线安装 * gradle中央仓库地址调整 * 执行 gradlew.bat * 导入到IEDA * * gradlew :spring-oxm:compileTestJava * 导入到IDEA * 编译和 运行Testst设置为 IntelliJ IDEA (建议) * 测试验证 * * 新建子模块 * 添加依赖 * 编写代码 加载Bean测试 * 运行测试 * Gradle 下载的依赖包存储的位置 * 问题 * 其他可参考 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center] -------------------- # 开发环境 # **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][https_github.com_spring-projects_spring-framework] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 1] copy地址,待会要用 这里我将放到了 D:\\workspace 打开 git bash ,执行如下命令 `git clone https://github.com/spring-projects/spring-framework.git` ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 2] 等一会即可,如下所示 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 3] 官方指导手册 ![在这里插入图片描述][20200905045426816.png_pic_center] [https://github.com/spring-projects/spring-framework/wiki/Build-from-Source][https_github.com_spring-projects_spring-framework_wiki_Build-from-Source] -------------------- # gradle调整 \[可选\] # ## gradle离线安装 ## 打开 `D:\workspace\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 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists gradle会去 distributionUrl对应的地址下载gradle压缩包,如果网络不好的话,可以提前现在好一个离线包 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 4] 修改 distributionUrl,如下 distributionUrl=file\:///D\:/Soft/gradle-6.5.1-bin.zip 安装目录: windows系统默认GRADLE\_USER\_HOME 为 `c:\Users\用户\.gradle` ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 5] -------------------- ## gradle中央仓库地址调整 ## 国内环境的话,建议调整一下gradle的中央仓库。 找到 build.gradle ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 6] 打开 285行 添加阿里云地址 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'} maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'} -------------------- # 执行 gradlew.bat # windows环境下 gradlew.bat 就是我们需要执行的脚本 第一次要下载好多依赖,速度取决于你的网速,如果失败的话,多执行几次,基本都是可以成功的。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 7] -------------------- # 导入到IEDA # ![在这里插入图片描述][20200905045438844.png_pic_center] [https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md][https_github.com_spring-projects_spring-framework_blob_master_import-into-idea.md] 根据提示来操作即可 Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle) When prompted exclude the spring-aspects module (or after the import via File-> Project Structure -> Modules) Code away ## gradlew :spring-oxm:compileTestJava ## 第一步 `gradlew :spring-oxm:compileTestJava` ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 8] -------------------- ## 导入到IDEA ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 9] 选择你拉取的spring源码,方式选择build.gradle ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 10] 等待index完成,需要下载jar包 ,不是很快(我用了好几次,耗时好几个小时),如果期间出错,多试几次。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 11] 点击刷新按钮,如上所示,基本可以认定为构建成功。 -------------------- ## 编译和 运行Testst设置为 IntelliJ IDEA (建议) ## 编译完成后建议 将编译和 运行Testst设置为 IntelliJ IDEA , 默认的Gradle特别慢。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 12] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 13] C:/Users/artisan/.gradle/wrapper/dists/gradle-6.5.1-bin/b4shxvjcpfsjxpjuxxiaa7cyh/gradle-6.5.1 **这个地方选OPEN JDK11 会有问题,请见问题记录** -------------------- # 测试验证 # ## 新建子模块 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 14] 选择 gradle ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 15] 随便建立一个子module的名称 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 16] ## 添加依赖 ## compile(project(":spring-context")) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 17] -------------------- ## 编写代码 加载Bean测试 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 18] package com.artisan; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.artisan") public class AppConfig { } package com.artisan; import org.springframework.stereotype.Component; @Component public class ArtisanService { } package com.artisan; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ArtisanTest { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); ArtisanService bean = ac.getBean(ArtisanService.class); System.out.println(bean.getClass().getName()); } } ## 运行测试 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 19] 至此,spring5.1.x的源码编译导入idea就算完成了。 -------------------- # Gradle 下载的依赖包存储的位置 # Windows系统默认下载到:`C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1` Mac系统默认下载到:`/Users/(用户名)/.gradle/caches/modules-2/files-2.1` -------------------- # 问题 # D:\workspace\spring-framework\spring-core\src\main\java\org\springframework\core\metrics\jfr\FlightRecorderStartupEvent.java:19:15 java: 程序包jdk.jfr不存在 最开始使用的OpenJDK jdk-11.0.8.10-hotspot 更换JDK为 OpenJDK8U-jdk\_x64\_windows\_hotspot\_8u265b01 【1】gradle JVM ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 20] 【2】 项目编译环境 的JDK ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 21] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 22] 重新编译,即可解决。 参考子路老师的博客 ,https://blog.csdn.net/java\_lyvee/article/details/107300648 ,感谢大佬分享。 -------------------- # 其他可参考 # [https://www.yuque.com/docs/share/17a9d955-2153-4113-8bbb-79c35e274ed0?\#][https_www.yuque.com_docs_share_17a9d955-2153-4113-8bbb-79c35e274ed0] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center]: /images/20221123/215ca4c430724745a548c6abb670a812.png [https_github.com_spring-projects_spring-framework]: https://github.com/spring-projects/spring-framework [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221123/d4494aed4fac4d4cab675a9dd4235a16.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20221123/ed7a4a91d0c345a594c932452d1105a5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 3]: /images/20221123/e3e60e36a4b7476eb40a290f178719d5.png [20200905045426816.png_pic_center]: /images/20221123/1499fe8952cf4ca198396aa8596d2e2d.png [https_github.com_spring-projects_spring-framework_wiki_Build-from-Source]: https://github.com/spring-projects/spring-framework/wiki/Build-from-Source [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 4]: /images/20221123/4bf64d19bb1947d3a80b86ec684bbd8d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 5]: /images/20221123/8dfef265f9ea4b70896aba2a14b48f34.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 6]: /images/20221123/2bfd6bc7b1ed4e40ae8e3800c3739a49.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 7]: /images/20221123/8fa180c2719445d6b20ed5ef14710fe3.png [20200905045438844.png_pic_center]: /images/20221123/ab920632446f4b8490f1fcf4e44c4f60.png [https_github.com_spring-projects_spring-framework_blob_master_import-into-idea.md]: https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 8]: /images/20221123/9cfb63167aaf421db765d820596b64c9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 9]: /images/20221123/eb0ad4ad29be4ae6a87da3eb614f80e7.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 10]: /images/20221123/f8f33cf14a5b4609b49674f460aacb5b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 11]: /images/20221123/1e157c005b9f4a41baea514340d76541.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 12]: /images/20221123/8f9ec4ffe905499b8c3b94613354abed.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 13]: /images/20221123/2a5834b0c0f949629f797196b2c6abaa.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 14]: /images/20221123/4d9e523345564cab9b230e9141190efc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 15]: /images/20221123/9fc9849ceb304bd592084a15ad427b0b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 16]: /images/20221123/f5d5031b53bd4b16a599881058e519cc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 17]: /images/20221123/b747a8bdbc834a49938803ab88f37a67.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 18]: /images/20221123/3668ee08efbd46bd8d5ce7cc4ad69abf.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 19]: /images/20221123/5593f92bdb9e4ea29486244e3e606cd4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 20]: /images/20221123/f446181111c94ed690bcdbe0c1e7c304.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 21]: /images/20221123/919a7b571e9145f3aada875580a6abd3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdzaGFuZ3dlaQ_size_16_color_FFFFFF_t_70_pic_center 22]: /images/20221123/531461acc1584a0f843c0dd71f5b922f.png [https_www.yuque.com_docs_share_17a9d955-2153-4113-8bbb-79c35e274ed0]: https://www.yuque.com/docs/share/17a9d955-2153-4113-8bbb-79c35e274ed0?#
还没有评论,来说两句吧...