下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

目录

环境计划

1.安装git

2.jdk版本1.8

3、Gradle目前不需要安装,按照源码提示即可,编译时按照Gradle对应版本即可

4.IDEA,我使用的版本是IDEA2020.3.1

1.获取Spring源码

推荐使用clone的形式将源码拉取到本地。 有用之处在于可以借助IDEA直接比较版本之间的差异

在c盘空间新建一个文件夹,比如SpringFramWork,单步进入SpringFramWork文件夹,键盘右键,选择gitbashhere,打开git命令行,输入以下命令,拉取spring源码

git clone https://github.com/spring-projects/spring-framework.git

下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

等待仓库被克隆。 这个过程可能需要很长时间。 如果不行,可以去GitHub官网或者码云直接下载源码的压缩包。

官网下载(下载太慢):

码云下载:

如果你像我一样直接通过命令拉取代码,记得切换到5.2.x版本下载源码编译,在git命令行执行命令:

 git checkout origin/5.2.x

2.添加阿里云镜像

在编译过程中,Spring会手动下载一些依赖包。 默认使用官方镜像,下载比较慢,所以我们提前添加国外镜像,将下面这行代码粘贴到刚才下的build.gradle文件中的repositories节点中,

//添加阿里云镜像
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }

下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

3.预编译spring-oxm模块

打开Windows命令提示符窗口,切换到源码所在文件夹,例如:E:softwareSpringFramWorkspring-framework,执行以下命令

gradlew :spring-oxm:compileTestJava

这里等待的时间比较长下载源码编译,我的是20分钟,当出现BUILDSUCCESS字样时就表示构建成功

4.根据编译好的源码下载并安装对应版本的Gradle

编译spring-oxm模块后,会在当前spring-framework目录下生成一个.gradle文件夹,打开后可以查看对应的Gradle版本。 双击打开.gradle文件夹可以看到对应需要的gradle的版本号,直接从下面的网站下载对应需要的版本即可:选择binary-only

5、下载安装后,配置Gradle的环境变量

添加GRADLE_HOME环境变量指向Gradle解压目录。 配置Path环境变量:添加%GRADLE_HOME%bin

然后测试是否安装成功,在命令行输入如下命令:gradle -v,查看是否正确输出对应的版本。

下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

6.为已安装的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
        }
    }
}

7.导出代码到IDEA

打开IDEA选择打开项目,选择当前的spring-framework目录,点击Finish,等待IDEA构建项目。 如果你已经按照我的方法配置了Gradle的外部镜像,这个过程不会花费太长时间。 我们只花了10多分钟就搭建完成

如果你像我一样直接查看代码,记得在IDEA上将git分支切换到5.2.x

如果右下角没有出现git分支右键右下角那一栏,查看gitbranch

下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

git分支出现后,左键点击键盘弹出选择列表,选择5.2.x

8. 构建整个项目

选择“构建”>“构建项目”

9.添加测试模块

右键项目名称—>新建—>模块,选择Gradle和Java,输入模块名称,点击下一步—>完成,完成测试模块的创建

最后添加一些必要的依赖,更改创建的模块中的build.gradle文件,添加以下三个依赖

compile(project(":spring-aop"))
compile(project(":spring-context"))
optional("org.aspectj:aspectjweaver")

10.添加访问模块源代码的入口

下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码

在新模块的java目录下添加一个包com.gxb.service,并在该包下添加一个服务类

package com.gxb.service;
public interface WelcomeService {
	String sayHello(String name);
}

在com.gxb.service包下添加impl包,并在该包下添加service实现类

package com.gxb.service.impl;
import com.gxb.service.WelcomeService;
public class WelcomeServiceImpl implements WelcomeService {
	@Override
	public String sayHello(String name) {
		System.out.println("welcome " + name);
		return "return success!";
	}
}

在com.gxb包下创建一个类,并编译一个入口函数

package com.gxb;
import com.gxb.service.WelcomeService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Entrance {
	public static void main(String[] args) {
		System.out.println("hello spring");
		String classPath = "spring/spring-config.xml";
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(classPath);
		WelcomeService welcomeService = (WelcomeService) applicationContext.getBean("welcomeService");
		System.out.println(welcomeService.sayHello("gxb"));
	}
}

在resource下添加一个文件夹spring,并在spring文件夹下添加一个spring-config.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="welcomeService" class="com.gxb.service.impl.WelcomeServiceImpl">
    </bean>
</beans>

以debug模式运行main函数,程序启动成功

参考官方文档:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 下载源码编译-下载并编译spring源码并导出到IDEA,并编译一个demo用于学习调试源码 https://www.wkzy.net/game/144767.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务