最新Spring源码导入IDEA,极限拉扯,无伤单杀

Spring源码导入IDEA ,极限拉扯,无伤单杀

在学源码,希望跟着视频一起走流程,拉源码到本地到顺利执行,稀里糊涂,花了我2天时间。

最重要最麻烦的就是
Gradle,kotlin,spring等版本的不一致。导致最多坑,还有就是阿里云等url 网速过慢。

有问题可以 在评论区 留下你的问题。

tips:
如果觉得源码debug起来,build太慢了。可能是IDEA配置,选的是Gradle中运行,修改配置成IDEA中运行,然后会遇到三个坑。在本文最下面会有解决方法,有什么其他问题,可以留言讨论!

1、确定你要的spring版本

我选择的是 spring 5.2.x

查看github,或者gitee上。gradle.

最新Spring源码导入IDEA,极限拉扯,无伤单杀_第1张图片

2、下载对应版本的gradle,设置环境变量等(这一步可以略过,只是为了以后少麻烦)

每一次构建,不过不设置本地,会重新从网络的下载gradle。

不下载本地,就多等一会儿。影响不大。

3、git clone 命令 到本地

git clone [email protected]:yasin4040/spring-framework.git

这是我的 基本也不会动,可以直接gitclone。默认是master分支

4、git 切换到想要去的分支

//查看分支

git branch -a

//命名,并切换分支

git checkout -b 5.2.x origin/5.2.x

//再次查看当前分支

git branch

顺利切换

5、更改 本地的gradle\wrapper\gradle-wrapper.properties 文件

本地Gradle配置方法,免去长时间的更新同步等待

distributionUrl=file:///D:/repo/gradle-5.6.4-bin.zip

6、先修改文件

最新Spring源码导入IDEA,极限拉扯,无伤单杀_第2张图片

6.1、修改build.gradle大概290行左右,加上我们国内的阿里云maven仓库。

repositories {
			// 新增2个阿里镜像地址
			maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
			maven { url 'https://maven.aliyun.com/repository/spring' }
			maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
			mavenCentral()
			maven { url "https://repo.spring.io/libs-spring-framework-build" }
			// 新增spring插件库
			maven { url "https://repo.spring.io/plugins-release"}
		}

6.2、修改settings.gradle文件

	repositories {
		maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
		maven { url "https://maven.aliyun.com/repository/public" }
		gradlePluginPortal()
		maven { url 'https://repo.spring.io/plugins-release' }
	}

6.3、修改gradle.properties文件


org.gradle.jvmargs=-Xmx2048M
org.gradle.caching=true
org.gradle.parallel=true
kotlin.stdlib.default.dependency=false
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true

7、根据sprign给出的提示,去 预编译文件:

./gradlew :spring-oxm:compileTestJava

./gradlew :spring-core:compileTestJava

8、导入IDEA中

选中文件 build.gradle 用idea打开。

9、修改idea的Gradle的配置(也可以跳过)

指定本地下载的gradle

10、创建自己的demo 新模块

最新Spring源码导入IDEA,极限拉扯,无伤单杀_第3张图片

11、修改demo的build.gradle

repositories {
    mavenLocal()
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation(project(":spring-context"))
}

12、写文件 开启debug

最新Spring源码导入IDEA,极限拉扯,无伤单杀_第4张图片

13、每次运行很慢,都要去build,使用idea 去运行

可以通过 File–>Setting–> Build,Execution,Deployment–>Build Tools–>Gradle 设置 Build and run using: 选择Intellj IDEA 即可。

14、运行报错

报错 Kotlin: warnings found and -Weeror specified

删除-weeror
最新Spring源码导入IDEA,极限拉扯,无伤单杀_第5张图片

还有一个
符号: 变量 CoroutinesUtils
位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar

添加到spring-core-main

最新Spring源码导入IDEA,极限拉扯,无伤单杀_第6张图片

15、问题3: 符号: 类 InstrumentationSavingAgent

java: 找不到符号
符号: 类 InstrumentationSavingAgent
位置: 程序包 org.springframework.instrument

解决
demo模块的build.gradle 增加
compile(project(“:spring-instrument”))
如下

plugins {
    id 'java'
}

group 'org.springframework'
version '5.2.21.BUILD-SNAPSHOT'

repositories {
    mavenLocal()
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
//    implementation(project(":spring-context"))
    compile(project(":spring-context"))
    compile(project(":spring-instrument"))
    compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.8.6'
}

顺利!!!一点debug,1s就进断点!!!!!!!!!

你可能感兴趣的:(Spring源码学习记录,java,idea,spring)