spring 源码编译

966 阅读1分钟

1.spring 源码编译使用的工具及版本

  • idea 2020.3.4
  • jdk 1.8.0_141
  • gradle 7.3
  • spring-framework-5.3.x

2.从 spring 源码配置文件中,确定 gradle 的版本号(此处我直接下载的 gradle 最新版 )image.png

3.spring 源码下载

image.png

4.安装 gradle (gradle 详细安装配置可自行 百度/Google)

  • gradle 官网下载 安装 gradle image.png

  • 在环境变量中配置 gradle,cmd 打开黑窗口 输入 gradle -v 命令验证配置是否成功 image.pngimage.png

  • 在 idea 配置 gradle 本地仓库image.png

  • 配置 阿里镜像
    在 C:\Users{用户名}.gradle 路径下创建文件 init.gradle,并添加如下内容
    def repoConfig = {
      all { ArtifactRepository repo ->
          if (repo instanceof MavenArtifactRepository) {
              def url = repo.url.toString()
              if (url.contains('repo1.maven.org/maven2') || url.contains('jcenter.bintray.com')) {
                  println "gradle init: (${repo.name}: ${repo.url}) removed"
                  remove repo
              }
          }
      }
      // maven { url 'http://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
      maven { url 'https://maven.aliyun.com/repository/central' }
      maven { url 'https://maven.aliyun.com/repository/jcenter' }
      maven { url 'https://maven.aliyun.com/repository/google' }
      maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
      }
      allprojects {
          buildscript {
              repositories repoConfig
          }
          repositories repoConfig
      }
    

5.导入项目到 idea,等待相关依赖下载

image.png

6.以下错误不影响项目的编译,若有强迫症,可以将项目 push 到 码云中,再 pull,然后 build 项目,可以解决以下报错(报错可能是与 .git 文件夹有关,也可以尝试替换项目中原有的 .git 文件夹)

  • not a git repository (or any of the parent directories): .git
  • process 'command 'git'' finished with non-zero exit value 128
  • fatal: Needed a single revision

image.png

image.png

7.编译 spring-oxm、spring-core(双击 compileTestJava)image.pngimage.png

8.编译 spring(双击 build)image.pngimage.png

9.在项目中新建自己的模块image.pngimage.pngimage.png

10.添加依赖 implementation project(':spring-context'),并重新 build 整个项目image.png

  • 网上许多文章是说使用 compile 引入其他模块,compile(project(':spring-context'))
    该方式会报错:Could not find method compile() for arguments [project ':spring-context'] 可能是与使用的 gradle 的版本有关

11.验证image.png