Spring 5.2.x 源码环境搭建(Windows 系统环境下)
本文来自博客 https://blog.csdn.net/qq_41907991/article/details/107101967 ,有改动。
参考官方文档:
https://github.com/spring-projects/spring-framework/wiki/Build-from-Source
https://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md
前期准备
1、确保本机已经安装好了 Git
2、Jdk 版本至少为 1.8
3、安装好 IntelliJ IDEA (其他开发工具,如 eclipse、Spring Tool Suite 等也是可以的),因为使用 IDEA 可以直接比较版本间的差异,如图所示:
源码构建
1、获取 Spring 源码
在需要使用 git clone 命令的方式将源码拉取到本地,命令如下:
git clone https://github.com/spring-projects/spring-framework.git
然后切换到 5.2.x 分支,命令如下:
git checkout origin/5.2.x
这个过程可能会耗费比较长的时间,此外还可以直接下载源码压缩包,如图所示:
2、添加阿里云镜像
在编译过程中,Spring 会自动下载依赖包,默认使用的是官方镜像,下载比较慢,所以我们提前添加好国内镜像,将下面这行代码粘贴到 build.gradle 文件中的 repositories 节点下即可:
//添加阿里云镜像
maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
如下图所示:
3、预先编译 spring-oxm 模块
打开命令行窗口,并切换到源码所在文件夹,执行以下命令:
gradlew :spring-oxm:compileTestJava
出现 BUILD SUCCESS 字样时说明构建成功。
4、根据编译后的源码下载并安装对应的版本的 Gradle
在完成 spring-oxm 模块的编译后,会在当前目录生成一个 .gradle 的文件夹:
打开后可以查看对应的 Gradle 版本:
可以直接在 https://gradle.org/releases/ 网站上下载对应的版本,注意要选择 binary-only 的。
安装好后记得配置 Gradle 的环境变量:
新增 GRADLE_HOME 环境变量,指向 Gradle 解压目录
配置 Path 环境变量:追加 %GRADLE_HOME%\bin
之后测试是否安装成,在命令行中输入:gradle -v 即可查看版本。
5、给 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
}
}
}
操作步骤如下图所示:
6、将代码导入到 IDEA 中
6.1、打开 IDEA 并选择导入项目
6.2、选择导入一个 Gradle 项目
6.3、配置导入的项目
点击 Finish 后等待 IDEA 构建完项目,如果配置了 Gradle 的国内镜像,这个过程应该不会太久。构建完成后整个项目结构如下:
如果你跟我一样是直接检出的代码,记得将分支切换到 5.2.x,如图所示:
7、构建整个项目
选择 Build > Build Project
可能出现的问题
1、AnnotationCacheAspect找不到符号
在这个过程中你可能会碰到如下错误:
这是因为AnnotationCacheAspect.aj 不是java文件需要另外的aspectj进行处理,可以按照以下步骤解决这个问题
- 下载aspectj,对应链接:https://www.eclipse.org/downloads/download.php?file=/tools/aspectj/aspectj-1.9.5.jar
- 安装aspectj
打开命令行,cd到AspectJ的jar包所在的文件夹,运行java -jar aspectj-1.9.4.jar命令,打开AspectJ的安装界面,直接点击Next,如下图:
接着选择 jdk 的安装路径,继续 Next:
接着选择 AspectJ 的安装路径,然后 Install 安装:
2、IDEA 中配置 aspectj
确保以下两个插件已经被激活
- Spring AOP/@AspectJ
- AspectJ Support
将编译器改为 Ajc,接着设置Ajc的安装目录,选择到aspectjtools.jar,同时,一定要将Delegate to Javac选项打钩,这个代理设置的作用只对指定的项目进行Ajc编译,其他的项目还是用默认的javac编译器编译。如果不勾选这个代理选项,则全部项目都使用Ajc编译器编译,可能会导致编译错误。
3、指定需要使用 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,成功完成编译
添加测试模块
1、右键工程名 —> new —> module
2、选择 Gradle 及 Java
3、输入模块名称
点击 next —> Finish 完成测试模块的创建
最后,添加一些必要的依赖,修改创建好的模块中的 build.gradle 文件,添加如下三个依赖:
compile(project(":spring-aop"))
compile(project(":spring-context"))
optional("org.aspectj:aspectjweaver")
如下图所示:
至此就完成了整个 Spring 源码的编译,并且创建了一个可供日后学习使用的模块!