本文参考自博客 https://blog.csdn.net/qq_41907991/article/details/107101967,有改动。php
参考官方文档:
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.mdjava
一、确保本机已经安装好了 Git
git
二、Jdk 版本至少为 1.8
github
三、安装好 IntelliJ IDEA (其余开发工具,如 eclipse、Spring Tool Suite 等也是能够的),由于使用 IDEA 能够直接比较版本间的差别,如图所示:
spring
一、获取 Spring 源码
在须要使用 git clone 命令的方式将源码拉取到本地,命令以下:app
git clone https://github.com/spring-projects/spring-framework.git
而后切换到 5.2.x 分支,命令以下:eclipse
git checkout origin/5.2.x
这个过程可能会耗费比较长的时间,此外还能够直接下载源码压缩包,如图所示:
maven
二、添加阿里云镜像
在编译过程当中,Spring 会自动下载依赖包,默认使用的是官方镜像,下载比较慢,因此咱们提早添加好国内镜像,将下面这行代码粘贴到 build.gradle 文件中的 repositories 节点下便可:ide
//添加阿里云镜像 maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
以下图所示:
工具
三、预先编译 spring-oxm 模块
打开命令行窗口,并切换到源码所在文件夹,执行如下命令:
gradlew :spring-oxm:compileTestJava
出现 BUILD SUCCESS 字样时说明构建成功。
四、根据编译后的源码下载并安装对应的版本的 Gradle
在完成 spring-oxm 模块的编译后,会在当前目录生成一个 .gradle 的文件夹:
打开后能够查看对应的 Gradle 版本:
能够直接在 https://gradle.org/releases/ 网站上下载对应的版本,注意要选择 binary-only 的。
安装好后记得配置 Gradle 的环境变量:
新增 GRADLE_HOME 环境变量,指向 Gradle 解压目录
配置 Path 环境变量:追加 %GRADLE_HOME%\bin
以后测试是否安装成,在命令行中输入:gradle -v 便可查看版本。
五、给 Gradle 配置国内镜像
进入 Gradl e安装目录,在 init.d 目录下新建 init.gradle 文件,并添加如下内容:
allprojects{ repositories { def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/' all { ArtifactRepository repo -> def url = repo.url.toString() if ((repo instanceof MavenArtifactRepository) && (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 } } }
操做步骤以下图所示:
六、将代码导入到 IDEA 中
6.一、打开 IDEA 并选择导入项目
6.二、选择导入一个 Gradle 项目
6.三、配置导入的项目
点击 Finish 后等待 IDEA 构建完项目,若是配置了 Gradle 的国内镜像,这个过程应该不会过久。构建完成后整个项目结构以下:
若是你跟我同样是直接检出的代码,记得将分支切换到 5.2.x,如图所示:
七、构建整个项目
选择 Build > Build Project
一、AnnotationCacheAspect找不到符号
在这个过程当中你可能会碰到以下错误:
这是由于AnnotationCacheAspect.aj 不是java文件须要另外的aspectj进行处理,能够按照如下步骤解决这个问题
打开命令行,cd到AspectJ的jar包所在的文件夹,运行java -jar aspectj-1.9.4.jar命令,打开AspectJ的安装界面,直接点击Next,以下图:
接着选择 jdk 的安装路径,继续 Next:
接着选择 AspectJ 的安装路径,而后 Install 安装:
二、IDEA 中配置 aspectj
确保如下两个插件已经被激活
将编译器改成 Ajc,接着设置Ajc的安装目录,选择到aspectjtools.jar,同时,必定要将Delegate to Javac选项打钩,这个代理设置的做用只对指定的项目进行Ajc编译,其余的项目仍是用默认的javac编译器编译。若是不勾选这个代理选项,则所有项目都使用Ajc编译器编译,可能会致使编译错误。
三、指定须要使用 Ajc 编译的项目
分别为 spring-aop 及 spring-aspects 添加 Facets 属性。
点击 File --> Project Structure --> Facets,选择 spring-aop.main,点击 OK
点击 File --> Project Structure --> Facets,选择 spring-aspects.main,点击 OK
完成添加,以下图所示:
完成上述步骤后,再次选择Build > Build Project,成功完成编译
一、右键工程名 —> new —> module
二、选择 Gradle 及 Java
三、输入模块名称
点击 next —> Finish 完成测试模块的建立
最后,添加一些必要的依赖,修改建立好的模块中的 build.gradle 文件,添加以下三个依赖:
compile(project(":spring-aop")) compile(project(":spring-context")) optional("org.aspectj:aspectjweaver")
以下图所示:
至此就完成了整个 Spring 源码的编译,而且建立了一个可供往后学习使用的模块!