源码学习:IDEA成功导入、编译、调试Spring5源码项目

IDEA搭建Spring-Framework-5.3源码阅读环境 Spring Framework-5.3.x 官方README.md 1 前言 2 环境准备 2.1 Git 版本控制工具(先fork,再clone源码) 2.2 JDK8及以上(java基础工具包及运行环境) 2.3 Gradle-6.5.1 工程构建工具(根据源码确定) 2.4 我使用的环境 2.5 IDEA2019.2.x 及以上版本 3 开始构建(保持网络流畅) 3.1 直接将源码导入IDEA中 3.2 设置Gradle 3.3 配置gradle-wrapper.properties. 阅读详情

目录

 

成功编译(不代表就完全成功,需要测试成功才是最终成功)

错误信息汇总:

1、编译流程

1.1、环境搭建:JDK1.8.0_211、Gradle4.9、IDEA2019.1.2

1.2、将源码导入IDEA

1.3、修改文件

第一步:注释dokka和asciidoctor 

第二步:修改schemaZip的两处位置,看注释行

1.4、预编译

2、测试模块


成功编译(不代表就完全成功,需要测试成功才是最终成功)

测试成功

看到项目调试成功,那就可以开启我们的源码学习之路啦!!!!

错误信息汇总:

1、TASK API:这个任务出现error,大都是javadoc出现问题,确定为JDK版本不对

正确做法是换为我们要求的JDK版本即可!

2、成功编译后,运行自己的测试项目报错:找不到InstrumentationSavingAgent

正确做法是spring-context.gradle修改 optional(project(":spring-instrument"))为 compile(project(":spring-instrument")),然后重新编译一下spring-context(compileTestJava+build),完美解决!


1、编译流程

1.1、环境搭建:JDK1.8.0_211、Gradle4.9、IDEA2019.1.2

JDK:jdk1.8.0_211(推荐这个版本)链接

Gradle:gradle4.9链接

Gradle的GRADLE_HOME环境配置和Java配置JAVA_HOME是一样的

记得在Path中配置%GRADLE_HOME%\bin

IDEA:IDEA 2019.1.2

1.2、将源码导入IDEA

在IDEA中File->Open将源码的文件夹导入

1、点击auto-import

2、点击使用本地的gradle

3、JVM环境设置为你的jdk1.8.0_211,也就是列表里的JAVA_HOME选项

4、在这里面配置vm选项

点击

设置VM为-XX:MaxMetaspaceSize=2048m -Xmx2048m -XX:MaxHeapSize=1024m

点击ok即可

1.3、修改文件

第一步:注释dokka和asciidoctor 

/*dokka {
	dependsOn {
		tasks.getByName("api")
	}
	doFirst {
		classpath = subprojects.collect { project -> project.jar.outputs.files.getFiles() }.flatten()
		classpath += files(subprojects.collect { it.sourceSets.main.compileClasspath })

	}
	moduleName = "spring-framework"
	outputFormat = "html"
	outputDirectory = "$buildDir/docs/kdoc"

	sourceDirs = files(subprojects.collect { project ->
		def kotlinDirs = project.sourceSets.main.kotlin.srcDirs.collect()
		kotlinDirs -= project.sourceSets.main.java.srcDirs
	})
	externalDocumentationLink {
		url = new URL("https://docs.spring.io/spring-framework/docs/$version/javadoc-api/")
		packageListUrl = new File(buildDir, "api/package-list").toURI().toURL()
	}
	externalDocumentationLink {
		url = new URL("https://projectreactor.io/docs/core/release/api/")
	}
	externalDocumentationLink {
		url = new URL("https://www.reactive-streams.org/reactive-streams-1.0.1-javadoc/")
	}
}

asciidoctor {
	sources {
		include '*.adoc'
	}
	resources {
		from(sourceDir) {
			include 'images/*', 'stylesheets/*', 'tocbot-3.0.2/*'
		}
	}
	logDocuments = true
	backends = ["html5"]
	// only ouput PDF documentation for non-SNAPSHOT builds
	if(!project.getVersion().toString().contains("BUILD-SNAPSHOT")) {
		backends += "pdf"
	}
	options doctype: 'book', eruby: 'erubis'
	attributes  'icons': 'font',
			'idprefix': '',
			'idseparator': '-',
			docinfo: '',
			revnumber: project.version,
			sectanchors: '',
			sectnums: '',
			'source-highlighter': 'coderay@', // TODO switch to 'rouge' once supported by the html5 backend
			stylesdir: 'stylesheets/',
			stylesheet: 'main.css',
			'spring-version': project.version

}*/

第二步:修改schemaZip的两处位置,看注释行

task schemaZip(type: Zip) {
	group = "Distribution"
	baseName = "spring-framework"
	classifier = "schema"
	description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at https://springframework.org/schema."
	duplicatesStrategy 'exclude'
	moduleProjects.each { subproject ->
		def Properties schemas = new Properties();

		subproject.sourceSets.main.resources.find {
            //此处修改为\\
			it.path.endsWith("META-INF\\spring.schemas")
		}?.withInputStream { schemas.load(it) }

		for (def key : schemas.keySet()) {
			def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
			assert shortName != key
			File xsdFile = subproject.sourceSets.main.resources.find {
                //此处将Linux路径符号替换为Windows路径符号
				it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
			}
			assert xsdFile != null
			into (shortName) {
				from xsdFile.path
			}
		}
	}
}

1.4、预编译

第一步:打开源码文件夹中的

spring-oxm和spring-core需要预先编译

第二步:预编译

打开gradle面板,找到各个源码模块,然后双击compileTestJava

第三步:整体编译

等待即可,大概20-40分钟

2、测试模块

在源码项目new一个moudle,类型为gradle的管理的java项目即可

自己使用注解测试一下即可

UserDao.java

package com.lpf.dao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
	public void printInfo(){
		System.out.println("user dao");
	}
}

Test.java

package com.lpf.test;
import com.lpf.dao.UserDao;
import com.lpf.utils.AnnotationConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ac=new
				AnnotationConfigApplicationContext(AnnotationConfig.class);
		UserDao userDao=(UserDao) ac.getBean(UserDao.class);
		userDao.printInfo();
	}
}

AnnotationConfig.java

package com.lpf.utils;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.lpf")
public class AnnotationConfig {
}

build.gradle添加compile project(":spring-context")

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile project(":spring-context")
}

运行Test.java,出现下图即证明spring5.1.x项目完美部署成功!


 

 

最新版spring-framework-5.0.1.RELEASE-schema.zip约束 立即下载

相关推荐

最新版spring-framework-4.3.10.RELEASE-schema.zip约束

最新版spring-framework-4.3.10.RELEASE-schema.zip约束

怎样使用lntelliJ IDEA 编写Java程序代码?

创建好chaptero1项目之后,就可以在项目中创建Java类了。在IDEA项目结构页面中,右击chapter01项目下的sre文件夹,在弹出的快捷菜单中选择New→Java Class命令,进入New Java Class选项界面,有很多可以选择的类型,本次选择Class选项创建一个Java类,并在上面的文本框中输入类名称HelloWorld,然后按Enter键完成Java类的创建。单击工具栏中的▶按钮运行程序,或者单击代码中HelloWorld类左侧的▶按钮运行程序,控制台显示运行结果,如下图所示。

Blue92120的博客 3707

schema简单文件

schema简单文件编写 课程资源 简单代码

Idea导入Spring源码

Idea导入Spring源码,下载,安装,导入一步到位!新手都可以导入成功!

qq_43372633的博客 2148

WPS接入DeepSeek,实现AI辅助功能

总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。

运维老生常谈 3805

如何加快香山处理器Chisel->Verilog编译速度

相比使用默认的scala firrtl complier,使用CIRCT能够将香山代码编译到Verilog的速度提高50%左右。在执行make命令时加上MFC=1,例如make verilog MFC=1或make emu MFC=1。在本地从源码编译CIRCT,在编译完成后将circt/bin路径加入PATH中。使用GraalVM免费版作为JVM编译香山比OpenJDK快10%-20%。我们推荐使用GraalVM代替OpenJDK。使用CIRCT编译香山。

专业技术人员的归宿 862

使用idea构建一个简单的SpringMVC+MySql项目

目录 一、创建项目 二、创建配置文件 1、创建配置文件 2、创建项目文件 三、配置idea的Project Structure 1.第一步: 配置Project 2.第二步:配置Modules 3.第三步:配置 Facets 4.第四步: 配置 Artifacts, 四、配置文件 1、web.xml 配置 2、applicationContext.xml配置 3、c...

shenju2011的博客 1706

FunASR与FreeSWITCH融合实战:从零构建高精度语音质检系统

本文详细介绍了如何将FunASR与FreeSWITCH融合,构建高精度语音质检系统。通过实时语音听写技术,结合热词定制和多模型切换,实现客服中心等场景的自动化质检,显著提升识别准确率和效率。系统架构涵盖音频采集、识别处理和业务应用三层,支持负载均衡和性能优化,适用于工业级部署。

weixin_29198045的博客 980

【文档插件】使用intellij IDEA AsciiDoc插件查看SpringCloud alibaba 开发文档

背景 我们开发过程中,查看SpringCloud alibaba开源代码文档中出现了.adoc文件,为了了解并使用这个文件,简单记录以下功能和用法,方便后续查阅使用. adoc 文档编辑利器 asciiddoc功能比较强大,比markdown给为强大,但是也复杂一下,使用门槛稍高,但不过还好。查查手册经常谢谢,很容易掌握的。 markdown 大家基本都熟悉,作为程序员,进行知识管理,用markdown 有点很多。例如我就喜欢他语法简洁,在积累下来的大量文档中搜索变的比较容易。比word要强多了。 mark

讯开技术孵化器博客 5456

解锁Jetbrains AI助手:中国开发者实战配置与效率跃迁指南

本文为中国开发者提供了一份详细的Jetbrains AI助手实战配置指南。针对服务地域限制,核心解决方案是通过修改Jetbrains账户区域信息并配置网络代理,实现插件的稳定启用。文章进一步分享了AI助手在解读遗留代码、生成中文提交信息、智能问答等场景下的具体应用,旨在帮助开发者深度集成这一工具,实现编码生产力的显著提升。

weixin_28832121的博客 575

破解拼多多网页字体加密的Python实现(静态)

爬取或者复制粘贴出来发现数字不是6372,而是这样的一个东西 ""从上图我们可以看出数字是一行的空白,后面被浏览器渲染后才展现的数字。我们可以用这个代码查看十六位进制对应的十进制,为什么要看十进制呢?​,而字体文件中的字符映射关系(cmap)也是以十进制存储的。我们搜索这个属性我们可以看到第一个这样的属性有一个URL,这个就是解密的字体包。然后我们构造一个这样的映射字典 key就是对应的十进制,后面的值就是对应的数字。然后我们需要封装一个函数,将加密文字和映射字典传入,返回解密后的数字。

weixin_64179111的博客 3540

Spring源码schema.zip文件找不到

在build.gradle文件中修改任务task:shemaZIp 原任务:

qq_35032655的博客 507

YOLO26 FP16/INT8混合量化实战:精度无损+速度拉满,边缘设备部署最优解

这是混合量化的灵魂,告诉量化器:哪些层不准动,保留FP16。"""判断是否为量化敏感层 → 是则豁免为FP16返回 True=敏感层(FP16),False=可量化(INT8)"""# 1. 检测头回归分支# 2. 小通道1×1卷积# 3. SiLU 激活# 4. 残差ShortcutYOLO26想要在Jetson、RK3588、昇腾、嵌入式NPU上真正落地,FP16/INT8混合量化是唯一最优解。它的核心逻辑不是玄学,而是工程上的精准取舍能量化的层,全部INT8榨性能;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 746

eclipse导入idea项目_源码学习:IDEA成功导入、编译、调试SPRING5源码项目

成功编译(不代表就完全成功,需要测试成功才是最终成功)测试成功看到项目调试成功,那就可以开启我们的源码学习之路啦!!!!错误信息汇总:1、TASK API:这个任务出现error,大都是javadoc出现问题,确定为JDK版本不对正确做法是换为我们要求的JDK版本即可!2、成功编译后,运行自己的测试项目报错:找不到InstrumentationSavingAgent正确做法是spring-cont...

weixin_39824020的博客 214

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

基于Simulink开发一个完整的直驱式永磁同步发电机DDPMSG仿真模型

需求分析直驱式永磁同步发电机(Direct-Drive Permanent Magnet Synchronous Generator, DDPMSG)广泛应用于风力发电、海洋能发电等可再生能源领域。与传统的齿轮箱驱动系统相比,DDPMSG具有结构简单、效率高、可靠性好等优点,能够直接将机械能转换为电能,减少了中间传动环节,降低了维护成本。本项目将基于Simulink平台,开发一个完整的DDPMSG仿真模型,模拟其在风力发电场景中的应用。我们将详细讲解如何设计和实现该系统,并结合实际应用案例进行说明。

MHD0815的博客 465

gradle idea 不能点确定_源码学习:IDEA成功导入、编译、调试SPRING5源码项目

成功编译(不代表就完全成功,需要测试成功才是最终成功)测试成功看到项目调试成功,那就可以开启我们的源码学习之路啦!!!!错误信息汇总:1、TASK API:这个任务出现error,大都是javadoc出现问题,确定为JDK版本不对正确做法是换为我们要求的JDK版本即可!2、成功编译后,运行自己的测试项目报错:找不到InstrumentationSavingAgent正确做法是spring-cont...

weixin_39613839的博客 184

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA阅读spring源码并调试

阿里云服务器优惠券领取 优惠券 目标:搭建起Spring源码阅读和代码调试跟踪的环境,顺便建立一个简单的Demo,能够调试Spring的源代码 本节,主要介绍一下Spring源码阅读和调试的相关环境搭建,并使用MVN创建一个非常简单的Demo,以便可以跟踪和调试Spring的内核。 1、源码的下载 Spring的源码可以从GitHub上下载:https://github.com/spri.........

lazy的专栏 4万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用IDEA环境编译Spring源码及spring源码调试环境搭建

前言: spring项目在开发中使用gradle进行项目自动化构建,所以在导入spring工程项目之前需要先安装gradle工具。 版本说明: spring:spring-framework-4.3.x gradle:gradle-4.10.2 jdk:jdk1.8.0_152 开发环境:IntelliJ IDEA 2017.3.5 操作系统:Windows 7 注:安装...

APE-MAN 7567

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring源码编译,导入IDEA,调试源码

安装Gradle 因为Spring项目是用Gradle管理的,所以得先安装Gradle,本文编译的源码版本为5.2.2.RELEASE 最好用和源码一个版本的gradle,不然会有各种问题,直接访问源码中带的链接即可 新建环境变量 export GRADLE_HOME=/Users/peng/software/gradle-5.6.4 export PATH=$PATH:$GRADLE_HOME/bin 命令行输入 gradle -v 输出版本则表示安装正确 spring项目github地址: htt

小识的博客 3093

idea导入spring源码并调试运行

花费几天时间总算搭建好了spring源码环境,并简单调试运行,这里记录一下过程。 写在前面:这里用的idea是最新版本,因为之前搭建的时候用的是2018.1的版本,构建项目时总是报错,后来上网查了查,可能是grdle版本或者idea版本问题,这里用的是spring源码里使用的gradle版本,更换idea版本,成功搭建。 本文环境 IDEA 2019.2.4 JDK 1.8.0_131 Spri...

ROAOR1的博客 6945

Spring-framework5.0.X源码的编译与运行

SpringFramework5.0X源码(已编译,可运行版) 开发环境Intellij IDEA(2018.2.4~2019.3.3测试均可运行) 相信旺仔弟兄们在导入SpringFramwork5.0X源码时,都会出各种各样的报错,这里将调试步骤和打包好的调试好的源码分享给大家。 一、安装配置Maven框架环境(这里用的版本为Maven 3.3.9) (1)Maven 3.3.9【内网下载】        (1.1) 进入下载页面 &

FullChair的博客 2128

使用idea和gradle编译spring5.1源码 + 使用已编译的spring源码构建spring项目

写在最前面,最近想学习spring,但是又不想只看看博客文档,这样只会知其然而不知其所以然,一些原理的东西即使当时知道了,但很快也会忘掉。所以我决定下载源码,通过写代码+debug,有利于我对spring工作本质有更深入的理解。我这人记忆力不太好,俗话好记性不如烂笔头,我决定记录下来供自己温故,也希望可以帮助一些遇到同样问题的人。 工具版本:spring5.1.5,gradle5.1,jdk1....

Java_Vicky的博客 5513
上一篇: 透彻的掌握 Spring 中@transactional 的使用
下一篇: 源码学习:Spring如何注解的Bean存入BeanDefinitionMap中的!
AARM
博客等级 码龄10年 10粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值