Spring:Spring源码下载、保存、编译
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源码下载、保存、编译相关推荐
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...
- Android 第三方ROM CyanogenMod 源码下载,编译,刷机
转自: http://blog.csdn.net/androiddevelop/article/details/8661120 一. 背景介绍 当前文章是记录自己HTC G12下载,编译,刷入手机 ...
- 从零开始成为GStreamer专家——基于Windows的GStreamer从源码下载、编译到开发
基于Windows的GStreamer从源码下载.编译到开发 本文介绍了在GStreamer下载方法, 使用过程中的部分依赖,以及在Windows上编译配置GStreamer 过程,为学习GStrea ...
- VLC for Android源码下载和编译
Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...
- ros源码下载及编译
Ros1 源码下载及编译 准备工作 Setup your sources.list Setup your computer to accept software from packages.ros.o ...
- WebRTC源码下载与编译
WebRTC源码编译 1 几种源码下载方案对比 1.1 拉别人下好的代码 1.2云服务器 1.3 国内镜像 1.4 挂代理(推荐) 2 源码编译环境准备 2.1 环境要求 2.2 代理服务器配置 2. ...
- Android12 源码下载、编译、刷机、单编调试Framework
文章目录 说明 1. 代码下载 1.1 下载Repo工具 1.2 安装和配置Git 1.3 创建工程目录 1.4 初始化Repo仓库 1.5 同步代码 2. 驱动下载 2.1 下载对应机型的驱动 2. ...
- SELinux零知识学习四、Audit应用层源码下载、编译和安装
接前一篇文章:SELinux零知识学习三.SELinux应用层源码下载.编译和安装 在前篇文章中编译SELinux源码时,出现了如下错误: seusers_local.c:11:10: 致命错误:li ...
- Android 4.0.1 源码下载,编译和运行
[牛人分享]Android 4.0.1 源码下载,编译和运行 转自 http://blog.csdn.net/rambo2188/article/details/6943382 ----------- ...
最新文章
- linux下free命令详解
- 游戏外挂设计技术探讨
- 就有趣,Python生成字符视频
- 03-类与对象——课后动手动脑
- 学生用计算机说明方法,15.文中多处运用了作比较的说明方法.请任选一例.说说运用这种方法的作用. 例子: 作用:...
- jQuery load() 中文乱码
- 成为奥运冠军需要天赋和努力
- 修改程序的形而上学思考(随笔)
- js中substr与substring的区别
- matlab如何记录时间,求助:在MATLAB里如何输入时间序列中的时间
- 维特比算法(Viterbi Algorithm)
- 绝地求生登录计算机需要授权,Steam第三方授权登录错误 《绝地求生大逃杀》国服绑定受影响!...
- python题目练习001--A+B Problem
- python-将图片存储到pdf中
- 闪迪MicroSD卡无法格式化修复经验(不一定管用)
- 快讯分类_如何从Google快讯创建RSS Feed
- 2020年9月电子学会Python等级考试试卷(二级)考题解析
- 软电话HTML界面,软电话条(webRTC)对接
- 【最终省二】全国大学生数学建模大赛-参赛经历
- 【状语从句练习题】综合训练