如何编译 Spring 源码?

目录

1、源码下载

2、构建工具准备

3、编译compileTestJava模块

4、导入项目到IDEA中

5、添加 gradle 模块


        本示例基于 spring-framework-5.2.7.RELEASE + Gradle + jdk1.8.0_131编译

        在开始之前,请确保电脑中已经装好了的对应版本的JDK。

1、源码下载

        从官网下载源码:Spring Framework

        选择想要编译的具体版本(Tags),点击 Code,下载即可

2、构建工具准备

        下载完成后,会得到 spring-framework-5.2.7.RELEASE.zip 压缩文件。

        解压该文件后,找到 gradle 目录,在该目录下有一个 wrapper 文件夹,里边就是我们编译当前版本所需要使用的构建工具 gradle。//gradle 和 maven一样,是一个项目管理和构建工具

        gradle 版本信息可以在 gradle-wrapper.properties 文件中看到,如果本地已经安装了 gradle 工具,看看是否与 gradle-wrapper.properties 中的版本一致,建议编译时使用与Spring官方一致的版本。

        为 build.gradle 添加国内镜像

        build.gradle 文件在解压后的 spring-framework-5.2.7.RELEASE 文件中,这个文件就相当于使用 Maven 时的 pom.xml 文件,用来管理项目的依赖等信息。我们在这个文件中添加国内镜像,可以加快依赖的下载速度。

        在 build.gradle内容中 configure -> dependencyManagement 下找到 repositories 项,添加进去即可,添加后完整的 repositories 项内容如下:

repositories {
	mavenCentral()//官方自带
	maven { url "https://repo.spring.io/libs-spring-framework-build" }//官方自带
	maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}//手动添加项
	maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}//手动添加项
}

3、编译compileTestJava模块

        简单的准备后,就可以开始编译了。

        在源码所在文件夹的搜索栏内输入 cmd 命令,即可跳转到所在目录的命令行窗口,在当前命令行窗口输入以下指令:

gradlew :spring-oxm:compileTestJava

        注意,gradlew 后是有一个空格的,为了避免空格的中英文格式窜乱,可以直接复制上边命令,示例如下:

        如果是第一次编译,还需要远程去下载 gradle,这个速度可能会非常的慢,需要耐心等待。//这里需要等待n...分钟,可以先去做点其他事

        如果编译失败出现:

        Error resolving plugin [id: 'io.spring.gradle-enterprise-conventions', version: '0.0.2']

        首先,将 build.gradle 中的 id ‘io.spring.gradle-enterprise-conventions’ version '0.0.2’ 注释掉

        保存设置后,重新编译,当出现以下提示,即编译成功

4、导入项目到IDEA中

        将项目导入到 IDEA 中,按照如下配置,open ->选择项目所在位置://项目使用的依赖管理工具是Gradle

        注:导入后等待编译,不要着急,需要一点时间编译完成。

5、添加 gradle 模块/测试

        首先,创建一个 gradle 模块,new->model->gradle-->输入模块名称

        然后,在新建模块下的 build.gradle 中添加如下依赖:

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

        接下来,随意添加任意的 bean 代码,此处的 bean 为 Hello:

public class Hello {
	public void sayHello(){
		System.out.println("Hello Spring!");
	}
}

        使用以下程序,对 bean 的有效性进行简单的测试://判断容器是否可以正确的创建 bean

public class MainStat {
	public static void main(String[] args) {
		//加载配置文件,生产Bean
		ApplicationContext context = new AnnotationConfigApplicationContext(Hello.class);
		//获取Bean
		Hello hello = (Hello) context.getBean("hello");
		//使用Bean
		hello.sayHello();
	}
}

        如果能正确进行以下输出,则表示上述的所有编译过程正确

        可能出现的问题:

        Error:(354, 51) java: 找不到符号:
        符号: 变量 CoroutinesUtils
        位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar

        然后选择 spring-core.main ,确定后,重新编译即可(如果继续报错,使用IDEA重新编译一下)

        kotlin/sequences/Sequence错误:

        这个错误在 idea 的插件中升级 kotlin 即可,如下所示:

        至此,全文结束。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
编译Spring码,你需要先安装JDK并下载Spring码。你可以从Spring官方的GitHub库中下载码,链接是https://github.com/spring-projects/spring-framework。如果你觉得下载速度慢,也可以使用这个已经下载好的链接:https://pan.baidu.com/s/18lEeQCwQKo1E4bli4SAJ2A 提取码:dvda。一旦你下载好了码,你可以按照以下步骤进行编译: 1. 配置好JDK环境变量,确保你可以在命令行或终端中运行Java和Javac命令。 2. 打开命令行或终端,进入到你下载好的Spring码的根目录。 3. 运行命令`./gradlew build`(对于Windows系统,运行`gradlew.bat build`),这将使用Gradle构建项目并编译码。 4. 等待编译完成,你可以在构建目录中找到生成的编译结果。 请注意,编译Spring码可能需要一些时间和计算资,同时也需要一些基本的编译知识和工具配置。建议你在编译之前先阅读Spring官方文档中关于构建和编译的指南,以确保你有必要的环境和了解编译的要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [spring编译](https://blog.csdn.net/jiayoubaobei2/article/details/127311223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [spring编译完整版](https://blog.csdn.net/qq_39409977/article/details/107904932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值