IDEA导入spring源码5.0x

1.前期准备:

1.IDEA 2020.1.2
2.spring源码5.0x
源码下载链接:https://github.com/spring-projects/spring-framework/tree/5.0.x
3. Gradle 版本:4.4.1

2.下载spring 5.0x源码

访问:https://github.com/spring-projects/spring-framework/tree/5.0.x
下载很慢的话使用点科学的东西,你懂得!
在这里插入图片描述
下载完成后进行解压。
解压后找到 gradle/wrapper/gradle-wrapper.properties 用记事本打开,可以看到:

在这里插入图片描述

3.下载 Gradle:

复制链接,把反斜杠 \ 删除,访问链接,下载对应的 Gradle 版本,下载完成后,再回来此文件,把这一行注释掉,改为自己下载的 zip 包,保存。

在这里插入图片描述
解压 刚才下载的 gradle zip文件。
再 D 盘任何目录下新建一个 gradle_repository 文件夹作为 gradle 的本地仓库,例如我的是:

在这里插入图片描述

再添加 gradle 的环境变量:

在这里插入图片描述

选择刚才解压的 gradle 和 新建的 gradle 仓库地址。

GRADLE_HOME = 你的gradle 解压路径
GRADLE_USER_HOME = 你新建的 gradle 本地仓库目录

双击 path ,新建 gradle 可执行文件路径 %GRADLE_HOME%\bin

在这里插入图片描述
测试 gradle 是否安装完成:
打开控制台,输入 gradle -v,若正常输出版本号则安装成功。
在这里插入图片描述
在 gradle 安装目录下,找到 init.d 目录下,新建 init.gradle 文件,注意,后缀是 gradle 文件,不是 txt 文件!
输入保存。

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

在这里插入图片描述

4.修改spring源码gradle编译镜像:

回到spring源码目录下找到 build.gradle 文件,打开:
搜索:repositories,共找到2处地方,都修改它。
在这里插入图片描述
在这里插入图片描述

		maven { url 'file:///复制你自己本地的gradle仓库地址,就是你刚才新建的文件夹'}
        mavenLocal()
		maven { url "https://maven.aliyun.com/repository/public" }
		maven { url "https://maven.aliyun.com/repository/gradle-plugin" }
		maven { url "https://maven.aliyun.com/repository/spring" }
		maven { url "https://maven.aliyun.com/repository/spring-plugin" }

搜索:configurations.all
在这里插入图片描述

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

搜索:artifacts,里面的内容都注释掉。
在这里插入图片描述
在这里插入图片描述
回到spring源码目录下,找到 settings.gradle 文件,打开,添加以下代码保存:

pluginManagement {
    repositories {
        maven { url "https://maven.aliyun.com/repository/public" }
        gradlePluginPortal()
        maven { url 'https://repo.spring.io/plugins-release' }
    }
}

在这里插入图片描述

5.编译 spring 源码:

在spring源码目录下打开,执行cmd:

gradlew build -x test

-x test 是 跳过测试test。

在这里插入图片描述
可能需要等几分钟或者几十分钟不等。如果没有出现编译失败,就没问题,中途也可以 ctrl + c 终止编译,后面任何时间再打开重新编译也可以。

6.IDEA导入spring源码

可以先打开任意一个自己的项目,然后进行先设置好 gradle,再进行导入:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等 IDEA 导入完成。
在这里插入图片描述
新建项目测试:
在这里插入图片描述
在这里插入图片描述
等待一会,可以看到setting.gradle 可以看到我们创建的模块了。
在这里插入图片描述
我们新建的模块 build.gradle 文件加 spring 包的导入:非常重要,不然你的测试类无法导包
在这里插入图片描述

    // 添加代码
    compile (project(":spring-aop"))
    compile (project(":spring-beans"))
    compile (project(":spring-context"))
    compile (project(":spring-instrument"))

新建 Student 类

public class Student {
	private String name;
	private String age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student{" +
				"name='" + name + '\'' +
				", age='" + age + '\'' +
				'}';
	}
}

新建 TestService 类:

@Component
public class TestService {
	public void testMethod() {
		System.out.println("Spring源码导入测试成功!");
	}
}

resource下面添加 beans.xml 文件,并配置bean:

<?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="student" class="com.gxm.Student">
		<property name="name" value="张三"/>
		<property name="age" value="22"/>
	</bean>
</beans>

新建一个 启动类 GxmTest 进行测试:

@Configuration
@ComponentScan("com.gxm")
public class GxmTest {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(GxmTest.class);
		TestService testService = context.getBean("testService", TestService.class);
		testService.testMethod();

		ClassPathXmlApplicationContext context2 = new ClassPathXmlApplicationContext("beans.xml");
		Student student = (Student) context2.getBean("student");
		System.out.println(student.toString());
	}
}

运行测试成功:
在这里插入图片描述

最后:

在这里插入图片描述

参考文章:
https://blog.csdn.net/weixin_44901327/article/details/130527598
https://blog.csdn.net/sco5282/article/details/118686000
https://cloud.tencent.com/developer/article/1632921
https://blog.csdn.net/yanyc0411/article/details/135047414
https://blog.csdn.net/qq_36437693/article/details/137809540
https://blog.csdn.net/qq_43372633/article/details/130867641

  • 41
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值