Spring-编译Spring源代码

🌲 Spring-编译代码

1️⃣ 下载spring-framework源代码

spring-frameworkgithub地址✨girhub地址✨

因为网络原因,我从gitee镜像上下载的,地址是[✨gitee镜像✨](https://gitee.com/mirrors/Spring-Framework)

下载之后,spring-framework目录中有如下文件

在这里插入图片描述

他们的作用分别是

  • gradlew - 会去自动下载gradle,用下载的gradle给你构建项目
  • build.gradle - 配置仓库、构建插件等
  • setting.gradle - 配置模块、插件等

2️⃣ 修改build.gradle和setting.gradle

build.gradle添加如下,目的是让gradle去aliyun下载依赖包

buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        maven { url 'https://maven.aliyun.com/repository/spring' }
    }
}
//295行左右
repositories {
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
	maven { url 'https://maven.aliyun.com/repository/spring' }
	mavenCentral()
	maven { url "https://repo.spring.io/libs-spring-framework-build" }
	maven { url "https://repo.spring.io/milestone" } // Reactor
}	

然后修改setting.gradle如下,不注销会导致获取不到ge.spring.io的授权

plugins {
	id "com.gradle.enterprise" version "3.5.1"
//	id "io.spring.ge.conventions" version "0.0.7"
}

3️⃣ 编译spring-oxm模块

gradlew :spring-oxm:compileTestJava

4️⃣ 使用idea打开

自动编译。如果没有,可以点击右侧gradle图标

5️⃣ 移除spring-aspects模块

因为spring-aspect提供的ajc编译器javac冲突,需要排除掉spring-aspects模块

在这里插入图片描述

🌳出现的问题

🍂缺少jfr包

错误如下

> Task :spring-core:compileJava
/home/s.tsypanov/IdeaProjects/spring-framework/spring-core/src/main/java/org/springframework/core/metrics/jfr/FlightRecorderStartupEvent.java:22: error: package jdk.jfr does not exist
import jdk.jfr.Label;
              ^
/home/s.tsypanov/IdeaProjects/spring-framework/spring-core/src/main/java/org/springframework/core/metrics/jfr/FlightRecorderStartupEvent.java:37: error: cannot find symbol
class FlightRecorderStartupEvent extends Event {
                                         ^
  symbol: class Event
/home/s.tsypanov/IdeaProjects/spring-framework/spring-core/src/main/java/org/springframework/core/metrics/jfr/FlightRecorderStartupEvent.java:34: error: cannot find symbol
@Category("Spring Application")

出现是因为jdk要使用 JDK 8 update 262或之后版本

🍁Process 'command 'git'' finished with non-zero

有两个原因。

首先,查看你是否注销了setting.gradle中的内容。

其次,查看你的gradlew命令模块名称是否错误。

🍖 参考链接

🍖 import-into-idea.md

🍖 Build from Source

🍖 使用Gradle编译Spring源码(Idea)

🍖 SpringBoot2.3.X源码编译之Gradle

🍖 Cannot build Spring with OpenJDK 8 on Linux

posted @ 2021-03-29 22:11  全力一拼  阅读(617)  评论(0)    收藏  举报