Spring 5.1源码编译

版本工具:IntelliJ IDEA 2018-3,gradle4.9,jdk1.8.0_181,spring5.1.x, kotlin1.2.41,groovy2.4.12,

编译spring源码的方式有很多方式,小编知道的就有两种,一种是gradle编译,一种是借助编辑工具编译,比如说eclipse和IDEA,这里就拿IDEA举例说明。

gradle 和 jdk的安装这里就不再复述,度娘查一下很easy,基本操作,下面直接开始源码编译。

  1. 导入之前,我们先看源码根目录中的import-into-idea.md文件

注意几点:

  1. 因为其他项目需要依赖spring-core和spring-oxm,所以我们导入后需要先编译这两个包
  2. spring-aspects需要依赖三方jar,所以这里编译可能会报错,但是不影响我们编译使用,让我们忽略这个错误
  3. 使用工具编译时,我们需要调整写参数避免出现内存溢出导致编译不通过    -XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m
  4. 在IDE中编译spring的源码,必须要先生成spring-oxm模块的资源
  1. 将源码导入到IDEA(将源码导入IDEA有两种方式), 源码地址:https://github.com/spring-projects/spring-framework.git
    1. 将源码下载到本地,解压之后导入到IDEA中
    2. 使用IDEA的git插件,直接从github上将代码导入到项目中
  2. 首先我们打开IDEA,选择地下的check pout from version control,选择git方式
  3. 输入源码地址和本地的目录,然后等待源码下载完成
  4. 选择使用gradle方式导入
  5. 注意截图部分中的配置项,选择自己本地安装的gradle,jdk的版本要1.8以上,对应的虚拟机参数调整
  6. 点击Finish,等到IDEA导入成功之后,我们切换下代码的版本,当前down下来的最新的是master版本,这里我们要编译的是5.1x版本,切换到版本5.1x后,IDEA会自动构建
  7. 项目在构建项目的时候可能会出现以下错误
    1. No such property: immutableValues for class: org.gradle.api.internal.tasks.DefaultTaskDependency,图截图所示错误解决办法:注释模块spring-bean中的spring-bean.gradle文件中的截图部分代码
    2. Could not find method useJUnitPlatform() for arguments ,错误如图所示解决办法:注释掉模块spring-test中的spring-test.gradle文件中的截图部分代码
    3. 小编在build两次之后,只出现了以上两处错误
  8. 下面开始编译spring-core的代码
  9. 以同样的方式分别去编译sping-bean spring-context spring-oxm模块
    1. run test的时候,可能会出现以下错误。产生问题的原因:sping-core会依赖两个核心的jar    解决方法:cmd窗口进入到sprng-core目录,执行命令gradle build,直到出现BUILD SUCCESSFUL,如图所示:
    2. 出现这个异常Kotlin: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 解决方法:在cmd窗口查看自己kotlin的版本
    3. 修改工程根目录下的build.gradle文件中的对应kotlin版本号(编译通过后,小编无意还原了github上的代码,kotlin的版本回滚到了1.2.71,发现并不会影响到源码的编译,这个可以忽略,但是也可以作为一个参考点)
    4. 以及IDEA编辑器中的kotlin版本
    5. 重新run test。 在run test其他模块的过程中,可能会出现,有些错误是可以忽略的,在你无法鉴定这个错误是不是可以忽略的时候,你就直接执行下面的步骤,新增module来测试代码能不能运行,debug能不能调试到spring源码中去,这里好像没有一个绝对的标准
  10. 新增Module来测试源码编译是否通过
    1. 右键spring工程,新增一个module
    2. 选择gradle Module,下一步
    3. 输入模块名称,下一步,然后finish,新增module成功
    4. 维护新增module对spring-context的依赖关系
    5. 编写测试代码
    6. 右键run Test.Main,查看输出结果
  11. 至此,sping源码在IDEA中编译完成,大功告成。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值