Spring源码编译加速,解决本地卡、慢等问题
最近在学习spring源码,下载源码后,使用gradle编译源码时,发现速度特别慢,在网络上参照了很多优秀的博客,修改了一系列的配置,包括settings.gradle、build.gradle 等,甚至还将本地的gradle文件夹里创建了一个init.gradle的文件,发现还是没有用,编译结束还是需要将近1个小时,当然,这个可能跟我的网络也有一定的关系。
上干货:用户目录上创建一个.gradle文件,并将里面的URL配置到阿里云,再次编译,3分多钟就结束了。
1、先将spring源码下载下来,并安装好对应的gradle
我的spring源码是5.2.8.RELEASE ,gradle用的是5.6.4。
2、去用户目录下创建init.gradle文件,并配置阿里云
用户目录大概长这个样子,你每天打开电脑登录的是哪个用户就是谁。
下面是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 }
}}
3、在下载的源码的目录gradle/wrapper
可以将文件gradle-5.6.3-all.zip放到本级目录,这样可以不用去远端下载,加快速度.
本级目录也需要创建文件init.gradle用于替换默认的url,可以有效防止401鉴权的发生.
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 }
}}
gradle-wrapper.properties内容修改为:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip
#此处配置的gradle版本里面的init.d中配置了替换url的方法,可以有效防止出现从repo.spring.io下载出现401问题
#注意官网下载的默认是没有init.d中的脚本,**需要手动压缩进去**,这样程序解压就能直接调用了,本地配置的环境变量gradle没生效
distributionUrl=gradle-5.6.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
4、build.gradle中需要替换的地方有两处
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven { url "https://repo.spring.io/libs-spring-framework-build" }
maven { url "https://repo.spring.io/plugins-release" }
mavenCentral()
}...省略下方代码
repositories {
maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }
//maven { url "https://repo.spring.io/libs-release" }
}
dependencies {...此处省略下方代码
5、编译源码
使用命令窗口,转入spring源码的目录后,使用命令gradlew :spring-oxm:compileTestJava编译,接下来就是激动人心的时刻了。
到此就结束啦!希望对大家有所帮助哦!