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

 更新时间:2020年08月07日 17:29:07   作者:minwang362  
这篇文章主要介绍了IDEA如何正确配置Gradle? GRADLE_USER_HOME 和 Gradle user home的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

缘起

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

目标

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

在这里插入图片描述在这里插入图片描述

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,这两个是不一样的

在这里插入图片描述

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 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图形按钮的版本并不一致。

在这里插入图片描述

如何验证这个坑?

可以在你下载的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:

在这里插入图片描述

第三种解决方案,配置单独的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的区别的文章就介绍到这了,更多相关IDEA配置Gradle内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SystemServer进程启动过程解析

    SystemServer进程启动过程解析

    这篇文章主要为大家介绍了SystemServer进程启动过程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • java迷宫算法的理解(递归分割,递归回溯,深搜,广搜)

    java迷宫算法的理解(递归分割,递归回溯,深搜,广搜)

    本文主要使用的算法(自动生成地图:递归分割法、递归回溯法;寻找路径:深度优先、广度优先算法),非常具有实用价值,需要的朋友可以参考下
    2021-06-06
  • SpringBoot整合mybatisplus和druid的示例详解

    SpringBoot整合mybatisplus和druid的示例详解

    这篇文章主要介绍了SpringBoot整合mybatisplus和druid的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Java基础之序列化与反序列化详解

    Java基础之序列化与反序列化详解

    这篇文章主要介绍了Java基础之序列化与反序列化详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 只用400行Java代码就能实现的飞翔的小鸟游戏

    只用400行Java代码就能实现的飞翔的小鸟游戏

    今天给大家带来的是关于Java实战的相关知识,文章围绕着只用400行Java代码就能实现的飞翔的小鸟游戏展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot整合JPA方法及配置解析

    SpringBoot整合JPA方法及配置解析

    这篇文章主要介绍了SpringBoot整合JPA方法及配置过程,JPA是Java Persistence API的简称,中文名Java持久层API,感兴趣想要详细了解可以参考下文
    2023-05-05
  • Go Java算法之简化路径实例详解

    Go Java算法之简化路径实例详解

    这篇文章主要为大家介绍了Go Java算法之简化路径实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • spring接口通过配置支持返回多种格式(xml,json,html,excel)

    spring接口通过配置支持返回多种格式(xml,json,html,excel)

    这篇文章主要给大家介绍了关于spring接口如何通过配置支持返回多种格式(xml,json,html,excel)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • Java+OpenCV实现图片中的人脸识别

    Java+OpenCV实现图片中的人脸识别

    这篇文章主要介绍了如何利用java opencv实现人脸识别功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • JAVA中JNI的简单使用分享

    JAVA中JNI的简单使用分享

    这篇文章介绍了JAVA中JNI的简单使用,有需要的朋友可以参考一下
    2013-10-10

最新评论