浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别

缘起

网上已经有了如此多的IDEA配置Gradle的文章,为何本菜鸟还想再写一篇这样的水文呢? 原因是按照网上大多数的配置,Gradle并不能按照你的想法很好的工作,倒不是说根据其他大佬的博客不能构建,而是你在构建时会发现IDEA使用的Gradle版本并不是wrapper中指定的版本。

目标

正确配置IDEA(2019.2.4), 使得在Terminal中执行以gradlew开头命令和操作图形化的IDEA使用Gradle版本是同一个版本。

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第1张图片浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第2张图片

GRADLE_USER_HOME和Gradle user home的区别

GRADLE_USER_HOME

  • GRADLE_USER_HOME指的是你需要配置的环境变量。该环境变量决定了执行 project/gradle/gradle-rapper.jar时下载 project/gradle/gradle-wrapper.properties中指定版本gradle的存放位置。
  • 简言之:在命令行中输入的以gradlew的开头的命令会使用GRADLE_USER_HOME指定环境变量所在位置来存放下载的gradle.
  • 注意:必须是gradlew开头的命令,不能是gradle开头的命令。原因是gradlew开头的命令说明你想使用gradle wrapper, 而gradle开头的命令则是使用的你配置在环境变量当中的gradle,这两个是不一样的

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第3张图片

Gradle user home

  • Gradle user home指的是IDEA中关于gradle的配置,该配置指是给IDEA使用的,当你在IDEA中点击gradle相关的图形按钮时,譬如gradle构建任务的按钮或者是Enable-AutoImport按钮时会使用Gradle user home指定的目录下载project/gradle/gradle-wrapper.properties指定的gradle版本
  • 简言之:在IDEA中的各种图形化操作都是使用这个目录去保存下载的gradle。

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第4张图片浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第5张图片

IDEA Gradle user home的坑

Gradle user home配置的不好的话是有一个大坑的,按照网上大多数的配置都会踩到这个坑,而且极不容易被发现。
这个坑的现象是:你在Terminal中输入的gradlew的任何命令使用的gradle版本和IDEA中图形化操作使用的gradle版本是不一致的。

造成这个坑的必要条件:

1、你下载了一个版本的Gradle版本,并且按照网上的博客配置了Gradle环境变量。
2、你在IDEA中配置了Gradle user home,并且该把该目录指向了你在本地自己下载解压的gradle。

如果你按照上面的配置,并且你自己单独下载的gradle和project/gradle/gradle-wrapper.properties中指定版本不一致时,你在IDEA中的Terminal中执行和点击IDEA图形按钮的版本并不一致。

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第6张图片

如何验证这个坑?

可以在你下载的gradle/init.d目录中写一个名为 init.gradle的脚本。你需要在三个地方写这个脚本,一个是你自己单独下载的gradle,一个是GRADLE_USER_HOME中下载的gradle版本,一个是IDEA Gradle user home指定目录中下载的grald中都加上,你就能清晰的看出到底当前使用的是那个gradle.

allprojects {
	println "using gradle wrapper v5.6.4 version!!!"
}

最终解决方案

  • 第一种解决方案,不下载Gradle,不配置关于Gradle的任何的环境变量,不配置IDEA的Gradle user home这种方式对于向使用Gradle的小白来说比较方便。此时你创建IDEA工程时,IDEA会自动下载工程目录下gradle/gradle-wrapper.properties中指定的Gradle版本到你的家目录的 .gradle目录下。
  • 实际上使用Gradle的确不需要自己额外安装一个Gradle,gradle的设计者考虑到gradle会频繁的升级因此每个gradle工程会带有一个gradle的目录,这个目录主要作用就是描述当前工程需要哪个版本的gradle,以及如何下载gradle. 因此你拿到别人的gradle项目,即使本机没有安装gradle,当你执行以gradlew开头的命令时会自行下载这个项目想要的gradle版本。

第二种方案:如果你想自己安装gradle,并且所有的工程都使用你自己单独安装的gradle。

  • 配置Gradle的环境变量,使得在任意的路径下可以执行gradle的可执行文件。
  • 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路径,这里的路径实际上可以不指定。- 可选操作
  • 配置 User from gradle指向安装的gradle:

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第7张图片

第三种解决方案,配置单独的gradle,并且工程默认使用gradle wrapper.

  • 配置Gradle的环境变量,使得在任意的路径下可以执行gradle的可执行文件。
  • 配置GRADLE_USER_HOME和IDEA 中的 Gradle user home路径,这里的路径实际上可以不指定。

注意:如果想要指定Gradle user home,那么一定不要配置为你安装的gradle所在目录,否则即使制定了user gradle from : gradle-wrapper.properties也不起作用,此时IDEA图形化的操作只会使用你在外面配置的gradle,而不会使用gradle wrapper,即项目指定的gradle。

  • 配置 User gradle frome: gradle-wrapper.properties:

浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别_第8张图片

到此这篇关于IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别的文章就介绍到这了,更多相关IDEA配置Gradle内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(浅析IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别)