Spring源码编译-for mac

超详细的spring源码编译

记:编译成功时间:2023.08.19

环境准备:

1.idea 2023.1.1 Community Edition

2.jdk1.8

3.gradlegradle-5.6.4

4.spring源码(版本:spring-framework-v5.2.25.RELEASE)

一.spring源码下载

github 加速网站,速度快,有条件的可以去github下载。

https://gitcode.net/mirrors/spring-projects/spring-framework?utm_source=csdn_github_accelerator

二、gradle的安装

(说明:将源码包解压以后,gradleWraper中的gradle可以远程下载gradle,也就是在spring-framework-5.2.12.RELEASE\gradle\wrapper\gradle-wrapper.properties有相应的体现。但是我没有使用远程下载,因为自己尝试了好几次,都会失败,所以自己在本地安装了一个gradle。上教程。)

gradle的下载

选择版本很重要,千万不要随意去选择一个版本,要不然后面可能会出很多的问题。版本参考spring-framework-v5.2.25.RELEASE\gradle\wrapper\gradle-wrapper.properties文件中的相应版本,如下图:

gradle下载链接:

https://gradle.org/releases/

(选择对应的binary-only版本就行)

gradle配置参考:

https://www.cnblogs.com/vitoboy/p/12487648.html

三.修改spring源码中的一些地方

1.因为我们自己配置了gradle,所以需要修改gradle\wrapper\gradle-wrapper.properties文件内容,让它使用我们自己配置的gradle,要不然它还是会去远程下载。

原文件是这样:

将distributionUrl修改成我们自己的gradle压缩包路径,如下图:

复制代码
distributionUrl=file\:///Users/eistert/Documents/do_not_delete/gradle-5.6.4-bin.zip

2.同样在build.gradle文件中找到repositories部分,添加阿里云镜像,这样编译会更快,如下图:

复制代码
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven { url "http://repo.springsource.org/plugins-release" }

3.找到settings.gradle文件并打开,同样找到找到repositories部分,添加下面代码

复制代码
maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}

五.将源码导入idea

1.直接使用idea打开源码那个文件夹就行

2.如果导入进去后就开始编译了,就需要暂停编译,需要修改一些配置,要不然他还是会去远程下载gradle,我们自己本地的就无效。

对这个配置有个比较重要的地方说明一下:Build and run using 和 Run tests using这两个选项不要使用默认的,选择idea来进行编译会快很多(我测试过了,快了不是一点点,是很多)

3.然后就可以点击下方的build开始编译了,如下图

最后如果全是绿勾勾说明编译成功。

六.测试

创建测试gradle module.

java 复制代码
package com.eistert.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.eistert.spring.test")
public class EistertSpringTestApplication {

	public static void main(String[] args) {

		ApplicationContext context = new AnnotationConfigApplicationContext(EistertSpringTestApplication.class);
		UserServiceImpl bean = context.getBean(UserServiceImpl.class);
		bean.sayHello();
	}
}
java 复制代码
package com.eistert.spring.test;

import org.springframework.stereotype.Service;


@Service
public class UserServiceImpl {
	public void sayHello() {
		System.out.println("你好呀spring!");
	}
}

理论上应该出现

但实际出现的是


百度了一下是 Kotlin 版本过低的问题,于是升了一下Kotlin版本

还是老样子,先这样吧。将就着看吧,问题真多。。。。。

参考文章

spring源码编译(spring,gradle,idea)

https://blog.csdn.net/qq_45750556/article/details/113244361

Spring 源码阅读环境的搭建

https://zhuanlan.zhihu.com/p/315023187

mac环境安装Gradle及配置

https://www.cnblogs.com/vitoboy/p/12487648.html

相关推荐
能摆一天是一天8 小时前
JAVA stream().flatMap()
java·windows
颜如玉9 小时前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂10 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年10 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
栒U10 小时前
一文从零部署vLLM+qwen0.5b(mac本地版,不可以实操GPU单元)
人工智能·macos·vllm
gb421528711 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
曾经的三心草11 小时前
Python2-工具安装使用-anaconda-jupyter-PyCharm-Matplotlib
android·java·服务器
Metaphor69211 小时前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java·经验分享·word
ChinaRainbowSea12 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
stormsha12 小时前
飞算JavaAI炫技赛电商系统商品管理模块的架构设计与实现
java·架构·鸿蒙系统