spring5.3.x源码编译

spring 5.3 源码编译

前言

最近开始学习spring源码,但是编译很烦,成功过几次都觉得好像是运气一样,所以记录一篇自己的编译教程

但是人很菜,中间还有很多自己没遇到的问题不是很懂,自己遇到的也没理解很深,希望以后可以更深入的理解

参考:

编译步骤:https://blog.csdn.net/lisijing8201/article/details/118413344

问题解决:https://blog.csdn.net/cjergfgp/article/details/130973319

环境介绍

  • spring版本5.3.x
  • jdk:本文需要有17
  • idea:2023.1.5
  • gradle:没有安装本地版,使用的是项目中配置的,版本为8.2.1
  • 系统:Windows11,在mac上验证过,也能成功

下载源码

git clone git仓库地址

修改配置

settings.gradle

增加如下配置:

maven { url "https://maven.aliyun.com/repository/public" }

在这里插入图片描述

gradle.properties

修改该文件,主要是修改jdk为17,这里尝试过8和11都会出现不同的问题

version=6.1.0-SNAPSHOT

org.gradle.caching=true
org.gradle.jvmargs=-Xmx2048m
org.gradle.parallel=true

kotlinVersion=1.8.22

kotlin.jvm.target.validation.mode=ignore
kotlin.stdlib.default.dependency=false
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true

## 配置jdk目录
org.gradle.java.home=C:\\software\\jdk17

build.gradle

增加如下配置

maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}

在这里插入图片描述

spring-core.gradle

修改spring-core目录下的spring-core.gradle文件,删除21,不删除会导致报错,原图如下:

在这里插入图片描述

multiRelease {
	targetVersions 17
}

gradle-wrapper.properties

指定gradle版本,原版本为8.1.1,尝试较低版本也会出现问题,构建报错,不知道原因,文件目录为gradle/

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip

预编译

gradlew :spring-oxm:compileTestJava --warning-mode all
gradlew :spring-core:compileTestJava --warning-mode all

idea 导入

  • 第一步
    在这里插入图片描述

  • 第二步
    在这里插入图片描述

  • 点击create以后,就打开项目了,然后等待idea构建项目,完成后进行验证

  • 新建一个module,这里jdk可以选择1.8 也可以选择17,不影响
    在这里插入图片描述

创建测试bean
在这里插入图片描述

import org.springframework.stereotype.Component;

/**
 * @author fs
 * @date 2023/8/16 8:51
 */
@Component
public class User {
	
	public void test(){
		System.out.println(123);
	}
}

测试

import cn.fs.entity.User;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("cn.fs");
		User user = (User) context.getBean("user");
		user.test();
	}
}

运行代码发现报错,点击Use JDK 17即可
在这里插入图片描述

再次运行代码
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值