spring源码编译就是这么简单

众所周知,spring已然成为javaEE开发的企业标准,面对这个神秘的黑盒,我们无不望而却步。但是“问渠哪得清如许,唯有源头活水来“,想要透彻的理解spring的原理,源码的学习是我门java工程师绕不开的坎。学习spring源码的第一步就是本地构建spring的源码环境,也是笔者今天所有讨论的主题。话不多说,让我们直入今天的主题。

[环境准备]

一、jdk1.8

二、构建工具gradle

 spring在spring4之后都是依托于[gradle](https://gradle.org/)构建,gradle是一款类似maven的现代化项目构建工具,在此就不再多赘述。gradle的社区十分活跃,从版本发布就可一窥其态势,面对如此多的gradle版本,在spring源码构建时如何选择gradle版本是困扰广大初学者一大难题。第二就是如何配置gradle可以提高构建速度?


gradle的版本选择是有矩可循的,打开spring的githuab主页(国内这个网站速度稍慢,可以使用gitee将github的项目导入到gitee中提高访问速度,见附录A),选择你想要分支,笔者以5.1.x为例查看/gradle/wrapper/gradle-wrapper.properties该文件。
1
2
3
4
5
ini复制代码distributionBase=GRADLE_USER_HOME  
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
可以看到distributionUrl中要求的gradle版本为\*\*4.10.3\*\*,去官网下载该版本的发行版,然后安装(解压),配置环境变量(笔者使用的是ubuntu20.04,windows的环境变量的配置可自行百度就不再多赘述)
1
2
3
4
bash复制代码export GRADLE_HOME=/home/mojito/application/gradle/gradle-4.10.3(gradle的主目录)
export PATH=$GRADLE_HOME/bin:$PATH
export GRADLE_USER_HOME=/home/mojito/application/gradle/repository(grale下载的jar
存放的位置)

配置完环境变量,需要配置从阿里云的镜像仓库下载jar包这样可以大大加快下载速度

1
2
bash复制代码cd /home/mojito/application/gradle/gradle-4.10.3/init.d(以自己安装gradle的目录为准)
touch init.gradle

init.gradle文件的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
java复制代码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
}
}
}

一切搞定后测试下是否ready,执行命令出现如下图所示即可

1
css复制代码gradle --version

[开始构建]

构建可参考[spring build from source](https://github.com/spring-projects/spring-framework/wiki/Build-from-Source)(这里不推荐使用gradlew命令,因为这个命令不需要你本地安装gradle,会自动从网上帮你下载gradle对应版本的二进制文件,作为构建项目的基础,但是这个下载及慢,大大影响构建速度,推荐按下面的方式进行)

一、源码下载

spring已被我们导入gitee,clone或下载zip包速度都很快,先将spring源码下载到本地。笔者目录为/home/mojito/workspace/opensource/spring-framework

二、开始构建

1
2
3
4
5
6
7
ruby复制代码1.进入源码目录 cd /home/mojito/workspace/opensource/spring-framework
2.编译oxm模块 gradle cleanIdea :spring-oxm:compileTestJava
3.导入idea 1).新建一个项目(项目随意)
2).建好项目后 File -> New -> Project from Existing Sources
-> Navigate to directory -> Select build.gradle
4.配置当前项目的gradle环境(不配置的会用wrapper中的配置从网上下载gradle,
这里下载很慢,所以建议手动配置gradle,因为本地安装了gradle)
完成上面几步,只需等待构建完成即可,网速快的话耗时二十多分钟即可享受香喷喷的spring源码啦。

[附录]

A:github项目导入gitee

  • 获取项目的github的clone地址(下图clone处的https地址)

  • gitee上选择从github导入项目

  • 将复制的url填在第一个输入框内,点击导入,等待完成即可

完成之后即可获得飞一般的访问速度

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%