idea构建spring源码 完整版

在构建spring源码的过程中,碰到了很多的问题,网上搜索了很多的教程,没有一个能构建成功的。。。下面总结下一下自己的经验。
(一)环境准备

1、 Idea 2018.3.5
2、gradle 5.6
gradle下载完之后,设置环境变量,如下:GRADLE_HOME和GRADLE_USER_HOME(用于存放下载的jar)
在这里插入图片描述
win+r,输入cmd点击回车,执行命令gradle -version
在这里插入图片描述
这样就设置成功了;
试过很多版本,这一套版本构建没出现问题。可能每个人情况不一样
(二)下载
方式一: spring的源码是由github版本控制器来管理,所以直接使用git直接clone Spring源码到本地:git clone git://github.com/SpringSource/spring-framework.git(不会的百度下,git怎么下载,我平常使用svn,git接触的少)
方式二:github网站下载,下载5.0x或者5.1版本,其中5.0x更加稳定
https://github.com/spring-projects/spring-framework
(三)编译
打开 spring-framework-master文件夹下的文件import-into-idea.md
在这里插入图片描述
在spring-framework-master的路径下打开cmd,执行命令 gradlew :spring-oxm:compileTestJava ,构建就会开始。因为会下载jar,需要的时间会比较久,可以使用科学的上网工具。中间由于网络问题,可能会失败几次,多执行几次命令就可以了。
在这里插入图片描述
出现红框中的内容就是成功了,下面的报错不用管,是git的问题。
(四)导入idea
1、选择gradle在这里插入图片描述
2、在这里插入图片描述
(五)修改文件
打开gradle下的docs.gradle文件
1、注释方法 dokka在这里插入图片描述
2、注释方法asciidoctor
在这里插入图片描述
3、修改方法task schemaZip为下面的内容(spring是在linux是开发的,路径和windows的不一样,因此需要需改这个方法。不改百分之99会报错)

    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 {
				//这里需要进行路径替换
				it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
			}
			assert xsdFile != null
			into (shortName) {
				from xsdFile.path
			}
		}
	}
}
``3、`右侧gradle(没有的百度下),双击spring-oxm下的compileTestJava
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101133246448.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
4、上一步执行成功之后,执行下面步骤
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101133641625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
执行成功之后,就表示构建差不多成功了
(六)测试
找到DispatcherServletTests.java,运行一下,如果没有报错,那么恭喜你,你构建成功了,就可以开心的往下玩耍了,不过一般不会一次成功,经常会报错找不到某个类。
解决办法参考下面的问题解决
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101133907288.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
(七)问题
1、说明
项目的路径不能存在中文、特殊字符和空格。很多莫名其妙的问题都是这个导致的,需要特别注意
2、nohttpProxy
这个问题是没有设置代理,可能需要科学上网工具了,能科学上网后
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101134431600.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
3、导入spring源码spring-core报错,在org.springframework.core.ReactiveAdapterRegistry中报错:
这个是缺少依赖导致的,需要添加依赖---》File--Project Structure---点击左上角+
kotlin-coroutines-5.2.3.BUILD-SNAPSHOT.jar位于spring-core\kotlin-coroutines\build\libs

其他缺少包的也可以这样做,少那个就添加哪个
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101134756564.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200101135042385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzg2MDE2,size_16,color_FFFFFF,t_70)

在这里插入图片描述
写在最后:
有问题,欢迎留言。我们共同解决。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值