Spring源码下载、保存、编译

  • Spring源码下载
  • Spring源码保存gitee仓库
    • 1、需改远程仓库地址
    • 2、将Spring源码推送到自己仓库
  • Spring源码编译
    • 1、新增下载源地址
    • 2、修改gradle版本
  • 源码编译时遇到的问题
    • 1、找不到jar包的问题
    • 2、JDK版本不对应的问题
    • 3、编译时可能出现的警告

Spring源码下载

注意:Spring源码使用的是Gradle,而不是Maven。因此下载Spring源码之前可以先安装Gradle,注意安装的gradle版本与spring源码中gradle-wrapper.properties文件中指定的gradle版本一致。参考:Gradle的下载、安装和配置环境。
Spring源码gitee地址:https://gitee.com/mirrors/Spring-Framework。
Spring源码gitee仓库地址:

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

Spring源码github地址:https://github.com/spring-projects/spring-framework。
Spring源码github仓库地址:

https://github.com/spring-projects/spring-framework.git

从远程仓库下载项目的流程,参考:idea下载git仓库中的项目

Spring源码保存gitee仓库

将下载的Spring源码保存到自己的gitee仓库中方便源码学习过程中对源码注释提交到gitee仓库。也可以保存调试Spring源码的测试代码。
gtiee个人仓库的创建参考:将本地项目提交到Gitee远程仓库。

1、需改远程仓库地址

选中Git中的Repository中的Remotes

将git仓库地址从Spring源码地址修改为自己的git仓库地址

2、将Spring源码推送到自己仓库

将spring源码推送到自己的远程仓库

Spring源码编译

1、新增下载源地址

在settings.gradle和build.gradle两个配置文件中新增阿里云仓库地址。
settings.gradle配置文件

repositories {//spring源码中已有的配置gradlePluginPortal()//新增的阿里云仓库地址的配置maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }//新增的阿里云仓库地址的配置maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }//spring源码中已有的配置maven { url "https://repo.spring.io/plugins-release" }}

build.gradle配置文件

repositories {//新增的阿里云仓库地址的配置maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }//新增的阿里云仓库地址的配置maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }//spring源码中已有的配置mavenCentral()//spring源码中已有的配置maven { url "https://repo.spring.io/libs-spring-framework-build" }
}

2、修改gradle版本

修改gradle-wrapper.properties配置文件中的配置,可以修改gradle的版本和下载的gradle存放的位置。一般不做修改。

#distributionBase和distributionPath组合在一起,是gradle压缩包解压后的文件的存放位置。
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#使用哪个版本的gradle,就在这里修改。gradle-##-all.zip是二进制版,只包含二进制文件(可执行文件)
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
#zipStoreBase和zipStorePath组合在一起,是下载的gradle的压缩包的存放位置
#环境变量GRADLE_USER_HOME的值
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists#gradle-##-all.zip是完整版,包含二进制文件、源代码文件和离线文档
#指定gradle的版本为本地存储的版本。
#distributionUrl=file:///D:/worktools/Gradle/gradle-7.2-all.zip
#将gradle-7.2-all.zip压缩包放到wrapper目录下。
#distributionUrl=gradle-7.2-all.zip

如果不想根据指定的路径去下载gradle。可以修改distributionUrl的值。
如果将gradle-7.2-all.zip压缩包与gradle-wrapper.properties配置文件放到同一目录下,那么直接指定distributionUrl=gradle-7.2-all.zip。弊端是:压缩包超过100M,无法推送到gitee上。
如果是指定本地存储的gradle,那么可以指定distributionUrl=file:///D:/worktools/Gradle/gradle-7.2-all.zip。弊端是:每个人本地存储路径不同。协作开发时,每个人都需要更改配置文件。

源码编译时遇到的问题

1、找不到jar包的问题

编译时,可以编译成功,但是会有jar包找不到的问题。

Errors occurred while build effective model from D:\worktools\Gradle\gradle_repository\caches\modules-2\files-2.1\com.alibaba\druid\1.2.6\c57198d77a31adf5bd36d35f9b12dc936b732587\druid-1.2.6.pom:'dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-tools.jar in com.alibaba:druid:1.2.6'dependencies.dependency.systemPath' for com.sun:jconsole:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-jconsole.jar in com.alibaba:druid:1.2.6

解决方案一:
根据报错信息中给出的路径找到文件,将文件中的依赖注释掉

<!--找不到以下两个jar包,将jar包的引入注释掉
<dependency><groupId>com.sun</groupId><artifactId>tools</artifactId><version>1.8</version><scope>system</scope><systemPath>${project.basedir}/lib/openjdk-1.8-tools.jar</systemPath>
</dependency><dependency><groupId>com.sun</groupId><artifactId>jconsole</artifactId><version>1.8</version><scope>system</scope><systemPath>${project.basedir}/lib/openjdk-1.8-jconsole.jar</systemPath>
</dependency>
-->

解决方案二:
根据错误信息中给出的缺少的jar包,如果本地有这个jar包,那么将systemPath中的路径修改为绝对路径即可。

<dependency><groupId>com.sun</groupId><artifactId>tools</artifactId><version>1.8</version><scope>system</scope><!--将jar包路径修改为绝对路径--><systemPath>D:/worktools/jdk/jdk-11.0.11/lib/openjdk-1.8-tools.jar</systemPath>
</dependency><dependency><groupId>com.sun</groupId><artifactId>jconsole</artifactId><version>1.8</version><scope>system</scope><!--将jar包路径修改为绝对路径--><systemPath>D:/worktools/jdk/jdk-11.0.11/lib/openjdk-1.8-jconsole.jar</systemPath>
</dependency>

如果本地没有提示中缺少的jar包,如果必须使用该jar包,那么需要寻找jar包资源,将然后将存放jar的绝对路径写到配置文件中。如果不适用jar包中的内容,那么可以创建一个txt文件,命名为jar缺失的jar包名称,将后缀改为.jar,同样需要将jar包的绝对路径写到配置文件中。

2、JDK版本不对应的问题

本地配置的Java的环境变量的JDK版本要与spring源码要求的版本对应。不然会有一下错误:无效的源发行版:17。

我现在的最新的spring源码,使用的是jdk17。
在编译之前查看spring要求的JDK版本:查看Spring编译要使用的JDK。
注意:要修改Java的环境变量中的jdk版本,只修改项目使用JDK是无效的。

3、编译时可能出现的警告

编译时可能会有以下警告。

Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

在Settings中搜过async,然后将Instrumenting agent的勾选去掉,警告就没有了。

Spring:Spring源码下载、保存、编译相关推荐

  1. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...

  2. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...

  3. Android 第三方ROM CyanogenMod 源码下载,编译,刷机

    转自: http://blog.csdn.net/androiddevelop/article/details/8661120 一. 背景介绍 当前文章是记录自己HTC G12下载,编译,刷入手机   ...

  4. 从零开始成为GStreamer专家——基于Windows的GStreamer从源码下载、编译到开发

    基于Windows的GStreamer从源码下载.编译到开发 本文介绍了在GStreamer下载方法, 使用过程中的部分依赖,以及在Windows上编译配置GStreamer 过程,为学习GStrea ...

  5. VLC for Android源码下载和编译

    Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...

  6. ros源码下载及编译

    Ros1 源码下载及编译 准备工作 Setup your sources.list Setup your computer to accept software from packages.ros.o ...

  7. WebRTC源码下载与编译

    WebRTC源码编译 1 几种源码下载方案对比 1.1 拉别人下好的代码 1.2云服务器 1.3 国内镜像 1.4 挂代理(推荐) 2 源码编译环境准备 2.1 环境要求 2.2 代理服务器配置 2. ...

  8. Android12 源码下载、编译、刷机、单编调试Framework

    文章目录 说明 1. 代码下载 1.1 下载Repo工具 1.2 安装和配置Git 1.3 创建工程目录 1.4 初始化Repo仓库 1.5 同步代码 2. 驱动下载 2.1 下载对应机型的驱动 2. ...

  9. SELinux零知识学习四、Audit应用层源码下载、编译和安装

    接前一篇文章:SELinux零知识学习三.SELinux应用层源码下载.编译和安装 在前篇文章中编译SELinux源码时,出现了如下错误: seusers_local.c:11:10: 致命错误:li ...

  10. Android 4.0.1 源码下载,编译和运行

    [牛人分享]Android 4.0.1 源码下载,编译和运行 转自 http://blog.csdn.net/rambo2188/article/details/6943382 ----------- ...

最新文章

  1. linux下free命令详解
  2. 游戏外挂设计技术探讨
  3. 就有趣,Python生成字符视频
  4. 03-类与对象——课后动手动脑
  5. 学生用计算机说明方法,15.文中多处运用了作比较的说明方法.请任选一例.说说运用这种方法的作用. 例子: 作用:...
  6. jQuery load() 中文乱码
  7. 成为奥运冠军需要天赋和努力
  8. 修改程序的形而上学思考(随笔)
  9. js中substr与substring的区别
  10. matlab如何记录时间,求助:在MATLAB里如何输入时间序列中的时间
  11. 维特比算法(Viterbi Algorithm)
  12. 绝地求生登录计算机需要授权,Steam第三方授权登录错误 《绝地求生大逃杀》国服绑定受影响!...
  13. python题目练习001--A+B Problem
  14. python-将图片存储到pdf中
  15. 闪迪MicroSD卡无法格式化修复经验(不一定管用)
  16. 快讯分类_如何从Google快讯创建RSS Feed
  17. 2020年9月电子学会Python等级考试试卷(二级)考题解析
  18. 软电话HTML界面,软电话条(webRTC)对接
  19. 【最终省二】全国大学生数学建模大赛-参赛经历
  20. 【状语从句练习题】综合训练

热门文章

  1. 《计算机网络基础与应用》笔记
  2. 【笔记记录】系统策划案该怎么写
  3. php生成黑链,网站被黑链接(进入黑网最有效办法)
  4. 如何通过qq发消息获取他人的IP地址。
  5. Win10系统蓝屏错误DPC怎么解决【系统天地】
  6. dex2jar android,dex2jar
  7. ajaxsubmit php上传文件,使用ajaxSubmit方法实现多文件上传(异步)
  8. 安装Rational Rose所踩得坑
  9. 各类曲线的参数方程_曲线的参数方程
  10. Springboot整合Drools规则引擎