IDEA导入Spring源码

1、下载spring源码(5.1.x)

首先从官网下载spring源码https://github.com/spring-projects/spring-framework

由于下载之后总是编译失败,所以我使用了GitHub将源码clone下来再进行编译

点击main→选择要下载的版本→点击右侧code 复制下载地址
在这里插入图片描述
在这里插入图片描述

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

有时clone报错可能因为网络原因,多试几次就可以了

2、安装、配置Gradle

打开源码中的spring-framework\gradle\wrapper目录下的gradle-wrapper.properties文件

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

Url则是gradle对应版本的下载地址

下载并解压到自己喜欢的目录,如下

在这里插入图片描述

配置环境变量

GRADLE_HOME、GRADLE_USER_HOME、PATH

右键此电脑→属性→高级系统设置→环境变量

新建系统变量GRADLE_HOME值为gradle安装目录

在这里插入图片描述

新建GRADLE_USER_HOME值是gradle的仓库目录,直接指定具体目录即可
在这里插入图片描述
在这里插入图片描述

3、 修改配置

在编译过程中,Spring会去自动下载一些依赖的包,默认使用的是官方的镜像,下载比较慢,修改配置从国内镜像下载将下面的配置 写入配置文件对应的位置:

maven { url "http://maven.aliyun.com/nexus/content/groups/public" }

将spring-frame-work根目录下的build.gradle文件中

在这里插入图片描述
在这里插入图片描述

4、预编译Spring源码

进入spring源码位置,打开命令窗口,执行 gradlew :spring-oxm:compileTestJava

在这里插入图片描述

有时候会因为网络问题build失败,多试几次就可以了

5、导入源码到IDEA、IDEA配置

在这里插入图片描述
在这里插入图片描述

导入代码

New→project from Exciting Sources…→sprig-frame-work目录下的build.gradle

6、新建demo进行测试

新建javabean Stduent

package com.spring.framework.pojo;

public class Student {
	String name;
	String age;

	/*construct、getter、setter、toString略*/
}

在resources目录下新建beans.xml用来管理bean,并为Student注入属性值

<?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.spring.framework.pojo.Student">
		<property name="name" value="张三"/>
		<property name="age" value="22"/>
 	</bean>

</beans>

创建测试代码

import com.spring.framework.pojo.Student;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ApplicationTests {
	@Test
	public void test01(){
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		Student student = (Student) context.getBean("student");
		System.out.println(student);
	}
}

在这里插入图片描述

7、参考文档

https://blog.csdn.net/u013713832/article/details/81227701

8、报错

E:\GitHub\springframework\springcore\src\main\java\org\springframework\core\metrics\jfr\FlightReorderStartupEvent.java

Error:(19, 15) java: 程序包jdk.jfr不存在
Error:(20, 15) java: 程序包jdk.jfr不存在
Error:(21, 15) java: 程序包jdk.jfr不存在
Error:(22, 15) java: 程序包jdk.jfr不存在
Error:(37, 42) java: 找不到符号
符号: 类 Event
Error:(34, 2) java: 找不到符号
符号: 类 Category
Error:(35, 2) java: 找不到符号
符号: 类 Label
Error:(36, 2) java: 找不到符号
符号: 类 Description
Error:(43, 10) java: 找不到符号
符号: 类 Label
位置: 类 org.springframework.core.metrics.jfr.FlightRecorderStartupEvent
Error:(46, 10) java: 找不到符号
符号: 类 Label
位置: 类 org.springframework.core.metrics.jfr.FlightRecorderStartupEvent

springframework5.0.x\springcore\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java

Error:(30, 41) java: 找不到符号
符号: 类 DefaultNamingPolicy

解决方案:安装AspectJ

下载连接:https://www.eclipse.org/aspectj/downloads.php

在这里插入图片描述

cd 到存放 java -jar aspectj-1.9.0.jar文件目录 执行java -jar aspectj-1.9.0.jar

在这里插入图片描述

后面一致默认即可,然后在IDEA中添加Facets属性

在这里插入图片描述

同上操作

在这里插入图片描述

修改编译器

在这里插入图片描述
在这里插入图片描述

如果还是报错

在这里插入图片描述

Fix→Add to Dependencies… →选择Spring-core即可

因为程序包jdk.jfr这个包是从jdk9开始有的,所以环境切换到jdk8的时候,编译不通过。
在这里插入图片描述
在这里插入图片描述

以上的地方改成更高版本的JDK即可,我改的是11,执行成功

在这里插入图片描述

Spring源码spring-core编译报错Error:Kotlin: [Internal Error] java.lang.LinkageError: loader constraint violation: loader… with name “kotlin/sequences/Sequence”

解决方案:

更新IDEA中的kotlin,settings→plugin→kotlin→update

如果没有更新按钮则去settings -> Languages & Frameworks -> kotlin

然后重启IDEA再次进行编译即可

Execution failed for task ‘:test’.

No tests found for given includes: XXXXXXXXXXXXXXXXXXXXXXXXX

在这里插入图片描述
查看build.gradle中是否有下面语句


test {
	useJUnitPlatform()
}

在这里插入图片描述

settings→搜索gradle→将Run tests using 选项 变更成 intelliJ IDEA 后点击 Apply 再点击 OK

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值