上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin281月前

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_HOMED:\javaenv\gradle-7.5.1
GRADLE_USER_HOMED:\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的源码就搭建成功了,可以进行学习和研究。从上面的步骤来看,其实还是很复杂的,尤其的环境,会出现各种意向不到的问题。这里只是我的一个搭建过程,可能大家在自己电脑上搭建还会遇到其他的一些问题,这里就需要自行解决了。

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦到还在世的人死了  梦见牙齿掉了几颗是什么征兆  易经八卦生辰八字算命婚姻