2021+版本的ideaSetting...
对Gradle的设置与2019年及以前的版本项目有了很大的改变,本篇文章介绍了如何正确的在新版本的idea中配置Gradle的仓库位置及优先使用maven本地仓库,以免造成数据的冗余。(强迫症狂喜)
本篇文章使用的环境: 操作系统:Windows 10 专业版 21H1 IntelliJ IDEA版本: 2021.1.3 (Ultimate Edition) JDK版本: 11.0.11+9-b1341.60 amd64 (无需下载Gradle,idea自带Gradle插件,构建时默认使用最新稳定版)
与以前的版本相比,首先是界面的不同:
是的你没看错,General settings
只有一个Gradle user home
。如果你查过其他资料,应该会想起环境变量的配置GRADLE_USER_HOME
。那么,它们之间的关系是什么呢?
gradle user home
其实是idea的项目从中央仓库下载jar包和Gradle环境还有其他配置文件的目录,这个目录默认是和GRADLE_USER_HOME
同步的,所以我们并不需要修改gradle user home
,只需要在环境变量中加入GRADLE_USER_HOME
即可自动修改gradle user home
。
Tips:
gradle user home
的默认路径是C:\Users\用户名\.Gradle
,也就是说默认下载的位置就是这里,C盘爆炸的真凶找到了!Tips 2:很多教程中提到
gradle user home
可以被改为官网下载的Gradle程序的目录,其实这样做并不好。idea会优先从gradle user home
中寻找可执行的gradle.bat程序,而我们自己设置的Gradle可能会与project默认的gradle程序的版本不同,这将会导致一个project中出现gradle异常的情况。如何使用自己的Gradle程序又不会使project的Gradle版本出现错误,见后文详解。
GRADLE_USER_HOME
综上所述,我们的第一步就是在操作系统中添加GRADLE_USER_HOME
(Linux系统请自行百度,本篇不再赘述):
1.打开“设置”,选择“系统”
GRADLE_USER_HOME
,值即为你想保存的目录路径。这样就配置好了我们的下载目录了。打开idea,新建一个project测试一下。
可以看到,在创建一个空的Gradle project后,我们先前设置的目录D:\Maven\Gradle
自动生成了许多文件夹,简单介绍一下:
.\caches\modules-2\files-2.1 中存放了我们从中央仓库所下载的jar包 .\wrapper\dists 中存放的是Gradle 程序(这也是我说不需要自己下的原因,idea会主动帮我们下好)
修改完位置,创建完new project,你可能发现了——怎么下包这么慢,我要配置远程仓库!但一个个project的build.gradle改太慢了,让我们使用相当于maven的settings.xml
一样的init.gradle
吧!
init.gradle
相当于maven中的settings.xml
,因此它也是有加载顺序的:
~/.gradle/init.gradle文件
~/.gradle/init.d/目录下的以.gradle结尾的文件
GRADLE_HOME/init.d/目录下的以.gradle结尾的文件
GRADLE_USER_HOME/init.gradle文件
GRADLE_USER_HOME/init.d目录下的以.gradle结尾的文件
这里的
GRADLE_HOME
和GRADLE_USER_HOME
都是系统环境变量,GRADLE_HOME
就是Gradle安装的位置,
~
相当于C:\Users\Holme\用户名
,也就是说上面的内容是linux/windows通用。
我们之前已经配置了GRADLE_USER_HOME
,因此就在D:\Maven\Gradle
目录下新建init.gradle
文件:
allprojects {
repositories {
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin' } maven {
url 'https://maven.aliyun.com/repository/google' } maven {
url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven {
url 'https://maven.aliyun.com/repository/jcenter' } mavenCentral() } }
这段代码表示我们将aliyun的几个maven仓库作为我们的首选下载地址,如果这四个地址都找不到,则调用 mavenCentral()
方法从maven中央仓库中寻找jar包。(因此Gradle查找仓库的顺序是从上往下)
大家学习Gradle时基本上已经学习过maven了,因此在本地肯定也有属于自己的maven仓库。(没学过的可以看我的文章学习一下如何优雅地使用idea+maven)
我们只需要在上述代码中添加一行mavenLocal()
即可:
repositories {
mavenLocal() }
但我们还不知道Gradle知不知道我们本地仓库的位置在哪呀?!(有点绕)不着急,我们先来看看Gradle查找本地仓库位置的过程:
~/.m2/settings.xml
M2_HOME/conf/settings.xml
~/.m2/repository
这里的
M2_HOME
是系统环境变量,也就是maven的安装目录。
看到这里你是不是已经恍然大悟了呢,我们只需要修改settings.xml文件或者直接使用默认设置即可。这里简单介绍一下settings.xml文件该如何配置。
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\Maven\repository</localRepository> </settings>
前面一堆约束并不重要,重点就是<localRepository>D:\Maven\repository</localRepository>
这个标签,将标签内容换成你的maven repository地址即可。
至此,你完成的idea+Gradle 的基本配置。
让我们打开一个project,再打开settings,进入Gradle的settings。
我们发现界面和之前不太一样,红色圈起来的User Gradle from
设置可以让我们配置自己的Gradle程序目录:
选择Specified location
,并在右边选择你的Gradle目录路径,即可选择你自己的Gradle程序。只要 Gradle User home
不变,下载的目录依然是我们在环境变量中设置的位置,这样就不会产生Gradle版本冲突了。