大家好,又见面了,我是你们的朋友全栈君。
1.前言:
经过多次拉取Spring源码编译失败经历,一下抓取配置编译过程各个软件版本可能有影响因此先做以记录(时间不同也会导致版本出入要注意) Idea:2020.1.1(参考文献博主2019.3.3版本也可) 插件:maven(3.6.3)(未用到)Gradle (4.10.3) Kotlin(idea内装) JDK:原机安装1.8版本 需要11版本(后续会说明JDK1.8问题) 注:流程可能较长,源码拉取编译不易,耐心阅读
2.流程
2.1抓取Spring源码
GITHUB网址:https://github.com/spring-projects/spring-framework 注意笔者:2020.12.9抓取版本 (v5.3.3-SNAPSHOT)版本可能会导致后期配置时的不适,同时码云上也有Springframework版本 暂未以此测试过
2.2gradle下载及安装
获取gradle-4.10.3,地址为:https://services.gradle.org/distributions/
,这里我们只选择安装文件即可,下载完毕后解压到相应目录即可(建议全英文目录) 直接访问该网址下载可能较慢,可搭”梯子“ 配置环境变量同java:
建立系统变量GRADLE_HOME 值为解压目录中bin文件夹的上一级目录(bin在这个目录下)
编辑PATH系统变量
配置完成以后win r,输入cmd进入dos界面,键入命令gradle -v,查看版本信息确保配置无误
此时可以打开idea配置 File->Settings 安装插件Gradle(该版本idea安装插件都需要重启)
File->Settings->Gradle 配置相关信息 Gradle user home 和刚刚环境变量配置路径一致bin上级目录
3.准备编译:
准备创建项目
选择拉取的项目路径:
选择导入模式
选择在新窗口打开编译 此时需要确认刚刚的Gradle配置是否无误打开File->Setttings ->Gradle 查看对比 此时可以看到项目开始加载下载,画圈处会有进度条或者直接以弹窗形式 该步骤需要等待较长时间 怀疑是因为Gradle没有配置国内镜像(类是maven) 这个大家可以查阅相关配置资料尝试 笔者下载三小时左右完成
下载编译完成右侧gradle框如图所示 控制台也会有成功提示(截图控制台显示是模拟的因为安装好了)
需要谈到一点,网上教程此处直接下载编译成功,笔者测试时有一次报错,jar包下载错误(怀疑是网络不稳定导致)如图点击reimport按钮可以再次尝试 完成
接下来可以在其中创建工程测试项目(注意此时源码可以注释修改 ,编译运行还可能有错因此还有记录)
4创建项目测试
项目中右键新建项目 画圈处是笔者后续编译出错的一个原因 应该是要JDK 11 否则spring-core包中有个java依赖找不到
这个时候需要修改build.gradle文件(类似于maven关联其他模块否则不能使用项目下其他包类)
内容如下
代码语言:javascript复制plugins {
id 'java'
}
group 'org.springframework'
version '5.3.2-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile(project(":spring-context"))
testCompile group: 'junit', name: 'junit', version: '4.12'
}
在默认生成文件下添加了该行
刷新配置加载:
正常编写spring代码运行后如图所示错误:
5这里面有三个问题:
1. Error:(354, 51) java: 找不到符号 符号: 变量 CoroutinesUtils 位置: 类 org.springframework.core.ReactiveAdapterRegistry.CoroutinesRegistrar 2.程序包jdk.jfr不存在 3.缺少 cglib 和 objenesis 包 Kotlin: warnings found and -Weeror specified
问题1解决:
添加依赖包 该包项目中有 在源码目录项目spring-core/kotlin-coroutines/build/libs下
选择
即可解决
问题2解决:
更换idea的JDK为JDK11(注意这个可以官网下载安装即可不需要配置到环境变量去使用那么麻烦) 本地有相关JDK11包即可
问题3解决:
emmm这个应该不算是问题 只是自己没有学过gradle 不太清楚运行流程原理 右侧Gradle中找到spring-core模块的tasks/other下
找到:cglibRepackJar 和 objenesisRepackJar把双击加载即可
此时整个spring框架加载编译完成可以自己编写代码测试,开启阅读源码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170019.html原文链接:https://javaforall.cn