gradle编译springboot源码

背景

​ 学习springboot第一步,就是下载springboot的源码,并对其进行编译。然而从springboot 2.3.x开始,其源码构建工具全面从maven转变为gradle,这让许多习惯使用maven例如我在内的码友们非常不适应。鉴于此,特地记录自己学习使用gradle编译springboot过程中的笔记,希望能为各位码友们提供点参考。

参考博文:https://blog.csdn.net/fxzzq/article/details/121804843

环境

  • jdk 1.8+
  • spring boot 2.3.7.RELEASE
  • gradle 6.7.1

值得一提的是,gradle由于其不同版本之间兼容性并不高所以编译不同版本的spring boot尽量使用对应版本的gradle

spring boot下载地址:https://github.com/spring-projects/spring-boot/tags

gradle下载地址:https://gradle.org/releases/

如何查看spring boot对应使用的gradle版本?先下载spring boot源码,解压缩后打开toPath/spring-boot-2.3.7.RELEASE/gradle/wrapper/gradle-wrapper.properties,下载对应的gradle版本即可

在这里插入图片描述

gradle环境搭建

​ gradle的环境变量配置这里不进行赘述,其与配置jdk环境无异,值得提醒的一点是除了配置GRADLE_HOME之外,最好在配置一下GRADLE_USER_HOME(该目录下面将存放gradle拉去的依赖文件,会很大,建议自行配置一个文件路径,否则默认放到c盘的user目录下的.gradle中)。

​ 配置好后通过命令行执行gradle -v可以查看到gradle版本信息即为配置成功。

gradle的使用

​ gradle的学习是一个曲折的过程,这里也不进行赘述,感兴趣的朋友可以自行找资料学习,这里主要说明几点:

  • gradle编译java工程,主要通过build.gradle作为入口,就类似于maven的pom.xml一样。其中的配置相关关键字和pom中的相似,大家见名知意,多少可以猜出来各自的功能。
  • build.gradle中有个plugins的概念,其用来引入对应的插件,比如java工程就会引入id为java的plugin,可以理解为引入该插件之后其会帮我们配置好许多的task,我们只需要通过build.gradle文件对其中不同的变量名做引入和局部操作即可(比如description就是对调用setDescription来设置description的值)
  • 除了上述的文件外还有一个名为 settings.gradle的文件,该文件主要用于多模块项目的使用,就好maven中的父子工程。

开始编译

​ 可以直接通过命令行的方式启动spring boot源码下的 gradlew.bat,也可以通过idea打开后自动进行编译,这里我选择后者。

idea中的配置

  1. 首先在project settings——project中配置jdk环境

在这里插入图片描述

  1. settings——build tools——gradle中指定好gradle环境

在这里插入图片描述

  1. 修改gradle的maven源地址,修改build.gradle和settings.gradle文件

    在这里插入图片描述

  2. 重启idea,等待其编译完成(这个步骤很耗时间,我这边预计花了1个小时左右,主要是要拉取相关依赖到本地,存储的路径如上文说的GRADLE_USER_HOME中)

遇到的问题

​ 编译过程中也遇到了一些问题,可以查阅网上其他友人的资料或借鉴这篇博文https://blog.csdn.net/fxzzq/article/details/121804843,我遇到了其中问题1 Task :buildSrc:checkFormatMain FAILED,解决方式是把 /buildSrc/build.gradle中的id **“io.spring.javaformat” version “${javaFormatVersion}”**注释掉就没问题了。

​ 编译过程也许很曲折,希望大家多点耐心解决。

​ 编译成功后如下图:

在这里插入图片描述

构建一个工程引用源码

​ 试着自己在spring boot源码项目下创建一个子工程spring-boot-mytest来引用该源码项目。

  1. 在spring boot项目下新建一个module,创建一个名为spring-boot-mytest的gradle项目。

    在这里插入图片描述

  2. 创建好后在settings.gradle会看到其将这个项目纳入其子项目了。

在这里插入图片描述

  1. 回到spring-boot-mytest,修改其中的 build.gradle文件,内容如下,具体内容细节这里不做过多解释,只说明一点:dependencies中引入依赖时第一个冒号是表示当前项目的意思(也就是说引入当前项目下spring-boot-project的工程)

    plugins {
        id "java"
        id "org.springframework.boot.conventions"
    }
    
    description = "this is my test"
    
    dependencies {
        implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
        testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
    }
    
  2. 创建一个入口类并启动项目

在这里插入图片描述

  1. 访问网页,访问成功

在这里插入图片描述

结语

​ 不忘初心,携手并进。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值