gradle+idea配置阅读Spring源码开发环境(解决jar包下载缓慢问题)

阅读源码是学习Spring的最好的方法,但是Spring不是使用maven进行构建,而是使用gradle进行构建的。gradle大家可以理解为和maven一样的东西,整体思想和maven也差不多。

很多博客都大概总结了使用gradle和idea编译spring的步骤,在编译中需要下载非常多的jar包,但是由于一些众所周知的原因,编译很容易失败,而且非常缓慢。这就是本文要解决的问题。

0 前提

进行安装之前,请确保你的jdk环境是1.8+,并且成功设置好了环境变量。
使用 java -version 进行检查

我的环境:

  1. IntelliJ IDEA 2019.3.2 (Ultimate Edition)
  2. JDK 1.8.0

1. 安装gradle

spring 源码是使用gradle进行管理的,所以首先得下载安装好gradle 并设置好环境变量。

1.1 下载gradle

建议到下面的网址中下载,比官网点击download 要快很多

网址:https://services.gradle.org/distributions/

我下载的是gradle-5.6.all.zip

idea gradle implementation 默认版本 idea怎么配置gradle_java

下载完之后 解压到你想要的文件夹中,注意路径不要出现中文。

1.2 配置环境变量

  • linux和mac中在~/.bashrc 中配置 并且保存设置
# 配置gradle环境变量
export gradle_home=/usr/local/gradle-5.6/bin
export PATH=$PATH:$gradle_home
  • windows中
    假设windows安装在 E:\install-dev\gradle-5.6.3 ## 修改为自己的路径

    在path中添加下列信息

1.3 查看是否配置成功

gradle -v

idea gradle implementation 默认版本 idea怎么配置gradle_intellij idea_02

1.4 配置gradle,加速

在gradle根目录:\init.d\下,新建一个:init.gradle 文件,添加以下内容

设置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        }
   }}

2. 下载spring 源码

2.1 下载源码

网址:https://github.com/spring-projects/spring-framework/tree/5.0.x

我下载的是spring 5.0的源码 可以使用 git下载

git https://github.com/spring-projects/spring-framework.git

如果比较慢,可以直接下载zip包,解压即可。

idea gradle implementation 默认版本 idea怎么配置gradle_spring_03

2.2 修改配置

配置spring源码根目录下的build.gradle文件:
注释configurations.all (注意不要注释错了,这里要小心,截图如下)
同时,添加一段配置

allprojects {
	repositories {
		maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
	}
}

idea gradle implementation 默认版本 idea怎么配置gradle_maven_04

2.3 开始编译

在spring源码根目录下
windows使用命令 : gradlew :spring-oxm:compileTestJava
linux和mac使用命令: ./gradlew :spring-oxm:compileTestJava

体验飞一样的感觉吧!我第一次编译只用了2分钟,和其他教程动不动failed完全不一样!

idea gradle implementation 默认版本 idea怎么配置gradle_spring_05

3. 导入idea

快成功了,但是还需要配置!

  • File -> New -> Project from Existing Sources -> 找到选择spring-framework源码
  • 然后配置项目的gradle 为自己的下载安装的gradle,不用使用idea自带的
  • idea gradle implementation 默认版本 idea怎么配置gradle_maven_06

这个时候 idea应该开始自动build了,然而发现 还是很慢。这里还有两处配置

  1. 修改spring源码根目录中的gradle.properties文件
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

idea gradle implementation 默认版本 idea怎么配置gradle_intellij idea_07

  1. 修改spring源码根目录中的setting.gradle文件,在第一行添加下面的配置,注意是在第一行 添加!不是覆盖所有!
# 在第一行插入
pluginManagement {
	repositories {
		maven { url "https://maven.aliyun.com/repository/public" }
		gradlePluginPortal()
		maven { url 'https://repo.spring.io/plugins-release' }
	}
}

idea gradle implementation 默认版本 idea怎么配置gradle_gradle_08

最后,保存好一切设置后,建议重启idea,重新打开项目,然后就会发现,飞一样的速度,编译通过!

idea gradle implementation 默认版本 idea怎么配置gradle_gradle_09