Spring源码阅读环境搭建

安装Gradle

下载 zip 包,这里推荐从这里下载 gradle,比较快
https://services.gradle.org/distributions/

个人使用版本8.1.1


下载好了之后,解压
配置环境变量

配置 path

命令行,输入 gradle -v,如果出来版本号,则表示安装成功
重启一下电脑让它生效

导入 spring 源码

源码建议从 gitee 码云上克隆,速度非常快
https://gitee.com/LSZYAB/spring-framework
也可以下载 zip 包

修改配置,下载加速

修改 gradle 配置
在 gradle 根目录下


init.d 文件下,新建一个 init.gradle 文件

文件内容是:

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

修改 spring 源码根目录下的 build.gradle 文件
将原本这块内容替换成:

    allprojects {
      repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
      }
    }

开始额外编译一下 spring-oxm 模块

cmd 到 spring 源码根目录下,执行:

gradlew :spring-oxm:compileTestJava


此时它会下载一个 gradle-5.6.4-all.zip ,这一步只能是用它自己指定版本的 gradle,让它正常下载即可
等到它开始编译的时候,先 ctrl + c 掉

然后把gradle 根目录下 init.d 中的 init.gradle 文件拷贝到
这个地方

然后再次运行,即可使用 阿里云的 仓库下载了,让它编译一会

最后五分钟编译完成

导入到 IDEA

File -> New -> Project from Existing Sources -> 找到选择spring-framework源码 -> 选择build.gradle
打开之后,貌似它又下载了一次


在它编译的时候,先停止

设置一下 gradle 的用户目录

修改一下参数为:-XX:MaxMetaspaceSize=512m

编译整个spring项目


等待一段时间
报错如下:

Could not find com.ibm.websphere:uow:6.0.2.17
Required by:
	project :spring-tx

这是 idea 版本 (我这里用的是 2020.1)和 spring 版本不兼容导致的,更换成 idea 2019.3 即可解决

测试

在spring-framework 工程上右键,new module,module名称为my-test,完成
在 resources 目录下,新建 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="hello" class="com.hundsun.Hello"></bean>

</beans>

修改 buidl.gradle 文件


新建一个类

package com.hundsun;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo {

	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		Hello hello = (Hello) ac.getBean("hello");
		System.out.println(hello.sayHello());
	}
}
package com.hundsun;

public class Hello {

    public String sayHello() {
        return "hello,spring";
    }
}

运行 TestDemo 的 main 方法
最后:表示构建成功

 

常见构建报错

错误一:

在对应的路径下面找不到对应的jar包,

运行一下spring-core中的build的task,会就产生所缺少的jar包

在这个过程中,会执行一些测试案例,所以需要一点时间,执行完成后,再此执行Test类中的Main方法

错误二:

报错的CoroutinesUtils是一个kotlin中的类,解决办法:

点击File -> Project Structure -> Libraries -> “+” -> Java,然后选择
spring-framework/spring-core/kotlin-coroutines/build/libs/kotlin-coroutines-5.2.4.BUILD-SNAPSHOT.jar,在弹出的对话框中选择spring-core.main,在重新build项目即可。

错误三:

这个报得很诡异,
InstrumentationSavingAgent这个类就是一个普通的Java类,只不过在spring-context中是这么引入的:

把这个optional改成了compile,重新运行Test,即可正常执行了(可能这个错在你们的机器上不会出现),也有可能有会重复出现关于错误二,如果出现了,直接再次执行解决错误二的步骤
 

参考博文: 

Spring源码阅读环境搭建(绝跑的通) – 源码巴士

Spring源码编译教程_51CTO博客_spring源码编译

感谢原创,支持原创

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值