idea搭建spring5.3.x源码环境

1.写在前面的话

碰到了不少想阅读或者学习spring源码的同学,但是第一步搭建这个源码阅读环境就能难倒了一大批人。下面我就以spring5.3.x这个源码分支,来具体演示一下搭建过程。

2. 下载源码

下载源码这一步,说实话,由于某些原因,会导致我们用git做clone的时候,老是中断,clone不下来。所以我们可以先把github的源码,复制到gitee上,然后从gitee上来下载。

  1. 打开spring的在github的源码地址:https://spring.io/projects/spring-framework
  2. 复制git的clone地址:https://github.com/spring-projects/spring-framework.git
  3. 打开gitee:https://gitee.com/,登录完成后,点击右上角的从Github/GitLab导入仓库
    idea搭建spring5.3.x源码环境_第1张图片
  4. 在Git 仓库URL中输入spring源码的clone地址,点击导入,稍微等一会,就完成了。
    idea搭建spring5.3.x源码环境_第2张图片
    这样我们就把spring源码导入到自己的gitee仓库中,方便我们日后学习过程的中的文件提交。
  5. 在本地将spring源码从我们的gitee代码库中clone下来:
git clone -b 5.3.x https://gitee.com/xxxx/spring-framework.git
  1. 稍等一下,源码就下载成功了。

3. 安装gradle

3.1 确定gradle的版本

因为spring源码是用gradle构建的,所以我们要先安装gradle。特别注意的是,gradle的版本必须和spring源码中要求的一致,否则会报错。版本信息在源码中的位置:
D:\studyspace\spring-framework-5.3.x\spring-framework\gradle\wrapper\gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

这里我们看到使用的是7.5.1这个版本。

3.2 下载gradle

从https://gradle.org/releases/ 选择的版本7.5.1下载。
idea搭建spring5.3.x源码环境_第3张图片

3.2 解压安装gradle

在本机上某个目录下解压下载的gradle,这里我放到了
D:\javaenv\gradle-7.5.1 这个目录下。
然后再这个目录下,新建.gradle,即:D:\javaenv\gradle-7.5.1.gradle
idea搭建spring5.3.x源码环境_第4张图片

3.3 创建初始化文件,配置仓库地址

在init.d文件夹下创建gradle初始化配置文件:init.gradle,然后在这个文件配置仓库地址。
D:\javaenv\gradle-7.5.1\init.d
idea搭建spring5.3.x源码环境_第5张图片
在这个文件下,创建init.gradle,内容如下:

allprojects{
    repositories {
        mavenLocal()
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter/' }
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
        maven { url 'https://jitpack.io/' }
        maven { url "https://maven.aliyun.com/repository/spring/" }
    }
}

settingsEvaluated { settings ->
    settings.pluginManagement {
        // Clear repositories collection
        repositories.clear()
        // Add my Artifactory mirror
        repositories {
            mavenLocal()
            maven {
                url 'https://maven.aliyun.com/repository/gradle-plugin/'
            }
        }
    }
}

这里一定要注意,必须配置https://maven.aliyun.com/repository/spring/。这里说一下原因吧。
我们在导入Spring源码时,总是无法下载com.ibm.websphere:uow:6.0.2.17包,如果我们换上https://repo.spring.io/libs-release 这个仓库地址的话,会报401错误,没有认证。如果我们使用阿里云的https://maven.aliyun.com/repository/public/这个仓库,会找不到这个包。那为什么在public下会找不到这个包呢?
因为发现public仓库并不包含spring仓库,所以需要增加https://maven.aliyun.com/repository/spring这个仓库地址。

3.4 配置gradle环境配置

这里我就以我的电脑为例,说一下需要配置的参数,具体操作自己去配就行了,很简单。
第一个参数:

参数
GRADLE_HOME D:\javaenv\gradle-7.5.1
GRADLE_USER_HOME D:\javaenv\gradle-7.5.1.gradle
path里加上gradle命令路径:%GRADLE_HOME%\bin

3.5 验证gradle

gradle --version

idea搭建spring5.3.x源码环境_第6张图片
这样gradle就配置完成了。

4. 配置idea环境

1.用idea打开spring源码,这时基本上会自动下载项目所需要的包,但是我们还没有配置好我们的idea,所以暂时先将build都停止掉;
2.配置project Structure 中的jdk版本,这里我使用的是jdk8
idea搭建spring5.3.x源码环境_第7张图片
idea搭建spring5.3.x源码环境_第8张图片
3.安装aspectj编译插件(spring-aop和spring-aspects项目需要此插件编译)
在idea的Settings中,找到Plugins,搜索AspectJ
idea搭建spring5.3.x源码环境_第9张图片
idea搭建spring5.3.x源码环境_第10张图片
4.安装AspectJ
1.aspectj的下载地址如下:
https://www.eclipse.org/aspectj/downloads.php,这里我选择最新的一个包下载
idea搭建spring5.3.x源码环境_第11张图片
这里我下载到了D:\javaenv 目录下
idea搭建spring5.3.x源码环境_第12张图片
右键打开终端,执行

java -jar aspectj-1.9.6.jar

idea搭建spring5.3.x源码环境_第13张图片
这时会弹出选择
2.选择下一步
idea搭建spring5.3.x源码环境_第14张图片
选择jdk
idea搭建spring5.3.x源码环境_第15张图片
在D:\javaenv新建目录aspectj1.9,然后下一步,选择
idea搭建spring5.3.x源码环境_第16张图片
然后选择Install,安装完成。
5.在idea中配置aspectj编译环境,注意:这里需要重新启动idea,否则上面aspectj插件不生效。
在idea的Settings中的Java Compiler,将Use compiler 设置为Ajc;同时在Ajc Options也做响应的配置,如下图所示:
idea搭建spring5.3.x源码环境_第17张图片
6.将spring-aop和spring-aspects两个module,添加aspect编译环境
idea搭建spring5.3.x源码环境_第18张图片
由于我这里已经配置过了,所以看不到选项。配置完如下:
idea搭建spring5.3.x源码环境_第19张图片
7.在idea中配置gradle仓库
idea搭建spring5.3.x源码环境_第20张图片
8.修改项目中的中央仓库配置,共三个位置
第一个位置:D:\studyspace\spring-framework-5.3.x\spring-framework\buildSrc 下的build.gradle
配置如下:
idea搭建spring5.3.x源码环境_第21张图片

repositories {
	mavenLocal()
	maven { url 'https://maven.aliyun.com/repository/public/' }
	maven { url 'https://maven.aliyun.com/repository/jcenter/' }
	maven { url 'https://maven.aliyun.com/repository/google/' }
	maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
	maven { url 'https://jitpack.io/' }
	maven { url "https://maven.aliyun.com/repository/spring/" }
	mavenCentral()
	gradlePluginPortal()
}

第二个位置:D:\studyspace\spring-framework-5.3.x\spring-framework,源码目录下的settings.gradle
idea搭建spring5.3.x源码环境_第22张图片

pluginManagement {
	repositories {
		mavenLocal()
		maven { url 'https://maven.aliyun.com/repository/public/' }
		maven { url 'https://maven.aliyun.com/repository/jcenter/' }
		maven { url 'https://maven.aliyun.com/repository/google/' }
		maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
		maven { url 'https://jitpack.io/' }
		maven { url "https://maven.aliyun.com/repository/spring/" }
		mavenCentral()
		gradlePluginPortal()
	}
}

第三个位置:D:\studyspace\spring-framework-5.3.x\spring-framework,源码目录下的build.gradle

idea搭建spring5.3.x源码环境_第23张图片

repositories {
			mavenLocal()
			maven { url 'https://maven.aliyun.com/repository/public/' }
			maven { url 'https://maven.aliyun.com/repository/jcenter/' }
			maven { url 'https://maven.aliyun.com/repository/google/' }
			maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
			maven { url 'https://jitpack.io/' }
			maven { url "https://maven.aliyun.com/repository/spring/" }
			mavenCentral()
			gradlePluginPortal()
		}

5. 编译工程

5.1 下载依赖

点击idea右边的gradle,刷新gradle,等待所有依赖下载完毕
idea搭建spring5.3.x源码环境_第24张图片

5.2 编译spring-oxm子项目

执行spring—>spring-oxm—>task-other下的compileTestJava插件
idea搭建spring5.3.x源码环境_第25张图片

5.3 编译整个工程

执行spring—>Tasks—>build下的build插件
idea搭建spring5.3.x源码环境_第26张图片
等待几分钟编译完毕即可。
但是在编译过程中还可能会出现各种错误,这时候我们可以多build几次,实在不行,就重启下idea,再次build就会成功。

6.测试

6.1 新建gradle的module

idea搭建spring5.3.x源码环境_第27张图片
idea搭建spring5.3.x源码环境_第28张图片

6.2 给新建的spring-study的添加依赖

idea搭建spring5.3.x源码环境_第29张图片

dependencies {
    api(project(":spring-beans"))
    api(project(":spring-core"))
    api(project(":spring-tx"))
    api(project(":spring-aop"))
    api(project(":spring-context"))
    api(project(":spring-expression:"))
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

6.3 创建测试代码

1.创建Student类,
idea搭建spring5.3.x源码环境_第30张图片

package org.springframework.study.domain;

/**
 * @author lxc
 * @createTime 2024-02-01 16:06
 * @description
 */
public class Student {

	/**
	 * id编号
	 */
	private Long id;

	/**
	 * 姓名
	 */
	private String name;

	/**
	 * 年龄
	 */
	private Integer age;


	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student{" +
				"id=" + id +
				", name='" + name + '\'' +
				", age=" + age +
				'}';
	}
}

2.在Main中编写main方法测试
idea搭建spring5.3.x源码环境_第31张图片

package org.springframework;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.study.domain.Student;

public class Main {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		Student student = context.getBean("student", Student.class);
		System.out.println(student);
	}
}

3.查看结果
idea搭建spring5.3.x源码环境_第32张图片

6.小结

这样我们整个spring的源码就搭建成功了,可以进行学习和研究。从上面的步骤来看,其实还是很复杂的,尤其的环境,会出现各种意向不到的问题。这里只是我的一个搭建过程,可能大家在自己电脑上搭建还会遇到其他的一些问题,这里就需要自行解决了。

你可能感兴趣的:(spring,spring5.3.x源码,gradle安装配置,spring5.3.x源码环境,spring源码搭建)