idea构建编译spring5.1.x源码环境

前言

我们平时天天写项目,一直用的spring,个人觉得,每天都在面对spring,确从来没有编译过spring源码,有点不太合适,所以今天我们就来编译一下源码环境,顺便做一个笔记。

这里给出我的配置:JDK1.8.0_172,IntelliJ IDEA 2019.1 (Ultimate Edition),gradle-5.4

注意:gradle版本需要4.2以上

第一步:保证我们环境已经全部准备完毕。

第二步:下载spring源码,源码下载地址:https://github.com/spring-projects/spring-framework,这里我下载的zip。

第三步:解压项目,然后导入idea,等待导入完毕后,我们需要注意一个文件,import-into-idea.md,内容如下:

1. `spring-core` and `spring-oxm` should be pre-compiled due to repackaged dependencies.

因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个包。先编译这两个项目

第四步:在编译前需要注意,在使用工具编译时,可能会出现内存溢出情况,这里我们编译时需要增加相关参数

-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m

如图:

 注意:这里曾经猜过的坑,jdk版本,不能太高,我曾经使用jdk1.8_20和jdk1.8_191编译,均会出现版本问题,我后来采用的是,1.8_1311.8.0_172版本,即可成功

第五步:如果上面的步骤都完成了,那么开始编译吧,由于要下载gradle仓库jar包,需要时间比较长(我这里需要了26分钟),拼机器性能和网速的时候到了

 编译成功后(不代表完全成功,需要测试成功才是最终的成功),编译成功后如下图:

使用刚刚编译的spring源码构建spring项目,在工程目录下,新建moudle,引入对应的依赖 

新建项目完成后如下,引入依赖,并添加测试类

 UserDao

package com.zoo.dao;

import org.springframework.stereotype.Repository;

/**
 * @author: 谢飞
 */
@Repository
public class UserDao {
	public void printInfo() {
		System.out.println("user dao");
	}
}

AppConfig

package com.zoo.utils;

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

/**
 * @author: 谢飞
 */

@Configuration
@ComponentScan("com.zoo")
public class AppConfig {
}

Test

package com.zoo;

import com.zoo.dao.UserDao;
import com.zoo.utils.AppConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @author: 谢飞
 */
public class Test {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
		UserDao userDao = ac.getBean(UserDao.class);
		userDao.printInfo();
	}

}

点击运行报错如下:

正确做法是spring-context.gradle修改 optional(project(":spring-instrument"))为 compile(project(":spring-instrument")), 

然后重新build项目spring-context,然后点击运行

最终控制台输出:

项目构建完成,正确输出。至此,spring5.1.x项目构建编译完成。

猜你喜欢

转载自blog.csdn.net/qq_36850813/article/details/103252426