IDEA 编译 Spring5 源码环境

最近学习spring-framework源码,在配置源码环境的过程中踩了不少坑,此处将配置过程记录下来,以便以后再配置的时候可以节省点时间。
本机环境:jdk1.8.0_161, IDEA2019.3.1, Gradle5.6.2, spring-framework-5.1.x, windows10

Gradle 安装

Spring-framework 使用 Gradle 环境构建,所以在编译Spring源码时需要安装Gradle环境,GradleMaven的安装方式类似,都是直接下载压缩包 -> 解压 -> 配置环境变量 即可。

  • 下载gradle压缩包
    进入官网下载地址:https://gradle.org/releases/ 下载对应版本,此处我下载的是 5.6.2
  • 解压压缩包
    解压到你自己的目录下,我的目录是 D:\work\softSave\gradle-5.6.2
  • 配置环境变量
  1. 配置 GRADLE_HOME = D:\work\softSave\gradle-5.6.2 (自己的解压目录);
  2. 在 PATH 中增加 %GRADLE_HOME%\bin
  3. 增加 GRADLE_USER_HOME 环境变量,指定自己的gradle下载的jar包放在什么地方,此处我配置了 D:\work\file\gradle_repo
  4. 在命令行输入 gradle -v, 如果出现如下信息则说明安装配置成功
    在这里插入图片描述
  • 配置本地仓库
    直接安装的gradle在进行build的时候某些包等资源会由于网络被墙的原因下载失败,所以可以配置gradle的全局仓库,我配置了阿里云的仓库:
    在 gradle 解压目录的 init.d 目录下新建 init.gradle文件, 里面添加如下内容即可
   allprojects{
   repositories {
       def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
       all { ArtifactRepository repo ->
           if(repo instanceof MavenArtifactRepository){
               def url = repo.url.toString()
               if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                   project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                   remove repo
               }
           }
       }
       maven {
           url REPOSITORY_URL
       }
   }
}

下载 Spring-framework 源码

spring的所有项目都位于github上面,spring-framework 的github链接 https://github.com/search?q=org%3Aspring-projects+spring&unscoped_q=spring

  • 打开链接,选择如下的项目
    在这里插入图片描述
  • 选择要下载的源码版本,并下载或直接使用git clone 到本地
    在这里插入图片描述

编译源码

  • 将源码导入到 IEDA 中,此时只能看代码,不能通过IDEA 找到直接点击进入对应的类中,是因为源码需要使用gradle 去构建
  • 构建源码:
  1. spring-core 和 spring-aspect 两个工程是其他模块所依赖的,所以需要先构建这两个工程
    a. 先进入到spring-aspect 目录下,在命令行输入 gradle build 命令构建,如图, 如果出现 BUILD SUCCESSFUL 则说明构建成功;
    在这里插入图片描述
    b. 进入 spring-core 目录,同样进行a 的操作;
  2. 在spring-framework 目录下找到 buildSrc 目录,运行 build.gradle 文件即可编译源码。

注:源码编译过程中可能出现错误,如果是下载资源错误,则需要重新配置gradle的仓库,如果是其他错误,则可以尝试注释掉相应的行,大部分是test类中的错误,用此方法可以解决,编译通过后即可开森滴各种骚操作看源码了。

发布了8 篇原创文章 · 获赞 3 · 访问量 840

猜你喜欢

转载自blog.csdn.net/weixin_40203134/article/details/103212308