如何在IDEA中定义Gradle的安装路径?

405

我正在尝试将一个Gradle项目导入IntelliJ,但是当我到达Gradle Home文本框时,它没有自动填充,输入Gradle Home路径也无法得到有效的位置 - 我设置了GRADLE_USER_HOME环境变量(我认为是!)正确的路径,并且我已经成功地将相同的项目导入到Eclipse中。有什么建议吗?


是的,JetBrains网站上的讨论似乎表明这是一个符号链接问题-请参阅Denis.Zhdanov在此处的回复:http://blog.jetbrains.com/idea/2013/04/gradle-improvements-at-121/ - josh-cain
1
如果您选择“使用默认的Gradle包装器(推荐)”,则无需设置Gradle Home。不幸的是,他们没有将其输入框变灰 - 他们仅通过鼠标悬停时的光标类型来指示其已禁用。 - Andrew Grimm
16个回答

487

您可以编写一个简单的Gradle脚本来打印您的GRADLE_HOME目录。


task getHomeDir {
    doLast {
        println gradle.gradleHomeDir
    }
}

并将其命名为build.gradle

然后使用以下命令运行:

gradle getHomeDir
如果您使用Homebrew安装,请使用brew info gradle查找基本路径(例如/usr/local/Cellar/gradle/1.10/),然后只需附加libexec
如果您使用build.gradle.kts,则可以通过Kotlin执行相同的任务。
tasks.register("getHomeDir") {
    println("Gradle home dir: ${gradle.gradleHomeDir}")
}

11
对于使用Linux Mint / Ubuntu的用户,/usr/share/gradle是该Gradle脚本的输出目录。 - Arthur
3
@Steve 很高兴能帮忙。今晚我自己也受益了。https://twitter.com/TrentonL/status/729546995686248448 - Trenton
4
这对我很有效,但很愚蠢。我使用Gradle的SDK管理器安装Gradle。为什么IntelliJ不能使用那个? - AutonomousApps
在 Fedora 25 上,也是 /usr/share/gradle。 - Uri Simchoni
2
对于Arch Linux来说,路径为:/usr/share/java/gradle - SirWojtek
显示剩余2条评论

280

通过Homebrew安装在Mac上,路径为

/usr/local/opt/gradle/libexec

优于

/usr/local/Cellar/gradle/X.X/libexec

因为前者将在版本升级后存活下来。


这对于Android Studio也是如此(至少截止到AS 1.3版本)。 - James
不错,我最终使用这个命令来设置我的GRADLE_HOME(以防止使用brew升级gradle时出现问题)export GRADLE_HOME=\python -c "import os; print(os.path.realpath('$(which gradle)'))" | xargs dirname | xargs dirname | xargs printf "%s/libexec"``如果有人能简化一下,那就更好了 :) - mlo55
2
@mlo55 更容易使用 export GRADLE_HOME=$(realpath $(brew --prefix gradle))/libexec - delitescere
@mlo55 为什么你要在 Python 中这样做,而不是直接在 shell 中调用 which gradle 呢? - Mike Young
@MikeYoung,当时我没有安装realpath。注意:现在我使用@delitescene建议的export GRADLE_HOME="$(brew --prefix gradle)/libexec/"。如果您正在使用brew,请在osx上比较ls "$(brew --prefix gradle)/libexec/"ls "$(which gradle)/libexec/" - mlo55

95
如果您使用Homebrew安装了Gradle,则路径为:
/usr/local/Cellar/gradle/X.X/libexec

X.X是gradle的版本号(当前为2.1)。


49
如果您使用的是 IntelliJ,只需按照以下步骤操作:
  1. 关闭项目
  2. 重新打开项目
  3. 您将在右下角看到“导入Gradle项目”的消息。点击。
  4. 选择“使用默认Gradle包装器”,而不是“使用本地Gradle分发”

这里输入图片描述

就这样了。

如果您选择“使用默认的Gradle包装程序”,那么提供Gradle home是否就不必要了呢? - Andrew Grimm
是的。这要怪糟糕的用户体验,我之前没有注意到。 - Andrew Grimm
1
“使用Gradle 'wrapper'任务配置”对我有用 - 不知道它的含义。 - scottysseus
1
如果您希望IDEA从实际的构建脚本中为您定义Gradle版本,则选择“使用Gradle 'wrapper'任务配置”。 - Cloudish123
@AndrewGrimm 在我的情况下,这个单选按钮是被禁用的。所以我无法选择它。有什么想法吗? - Mikheil Zhghenti

43

这是我解决导入Gradle项目时未设置IDEA Gradle home的问题的方法。

三种选项 —— (A) 默认包装器 (B) "gradle 'wrapper'任务配置" 或 (C) 由JetBrains定义的 "本地gradle分发": https://www.jetbrains.com/help/idea/gradle-settings.html

A. 默认包装器 (推荐)

如果可以,请选择此推荐选项。如果此选项已变灰,请参考选项 C,这将为所有后续项目设置默认值。

B. Gradle 'Wrapper' 任务配置

如果您想让IDEA根据您的构建脚本为您定义gradle版本

  1. 如果您在实际的gradle构建中将gradle版本定义为任务,请设置此选项。

以下示例来自JetBrains: https://www.jetbrains.com/help/idea/gradle-settings.html

enter image description here

(如果您不想在项目之间共享gradle构建,则此选项很有用)

C. 本地Gradle分发

1. Run the following command to get gradle location:

   brew info gradle (if gradle was installed with homebrew)


2. You are looking for something like this:

   /usr/local/Cellar/gradle/4.8.1


3. Next, append 'libexec' to the gradle location you just found:

/usr/local/Cellar/gradle/4.8.1/libexec

这是因为“libexec应该被其他由程序执行的守护进程和系统实用程序使用”(即,IDEA)。请参见https://unix.stackexchange.com/questions/312146/what-is-the-purpose-of-usr-libexec

4. Finally, put that new path in the Gradle home input box if IDEA prompts you.

输入图像描述

  1. IDEA现在应该已经允许你点击OK了 输入图像描述

无论我做什么,都会得到以下错误信息:原因:无法找到请求目标的有效认证路径。 - slashdottir
@slashdottir,这可能与您使用的网络有关(如果在工作或大学中),或者您需要关闭IDEA,重新启动计算机,并从新项目重新构建。请参见https://dev59.com/D1gQ5IYBdhLWcg3wqFsF,即使它是Android-studio,它仍然可能有用。如果有任何帮助,请告诉我。 - Cloudish123
1
最后我刚刚转而使用命令行构建Gradle - 这种方式运行得很好 - 谢谢。 - slashdottir

12

C:\Users\<_用户名>\.gradle\wrapper\dists\gradle-<_版本号>-all\<_随机数字>\gradle-<_版本号>

\Android studio\gradle 对我不起作用。

并且在从bitbucket导入(克隆)项目时未配置“默认gradle wrapper”。

如果很难找到路径,请使用我的路径:

C:\Users\prabs\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1


1
仅发布适用于您的用户名和特定版本号的路径并不是很有帮助。也不提供任何解决方案也不是很有帮助。 - MarkHu

9
这是MAC系统的说明。我遇到了同样的问题,通过在.bash_profile中配置$GRADLE_HOME来解决问题。以下是具体步骤:
  • 打开.bash_profile(通常位于用户主目录下)。
  • 添加以下行以更新$PATH变量: export GRADLE_HOME=/usr/local/opt/gradle/libexec export PATH=$GRADLE_HOME/bin:$PATH
  • 保存文件。
  • 通过运行source .bash_profile应用更改。
如果有人遇到同样的问题,我写了一篇文章提供指导。

感谢您的回答。对于gradle4.7版本: export GRADLE_HOME=/usr/local/Cellar/gradle/4.7/libexec export PATH=$GRADLE_HOME/bin:$PATH - Piash Sarker
1
@PiashSarker,我可以看到 /usr/local/opt/gradle/libexec 是一个符号链接指向 /usr/local/Cellar/gradle/4.7/libexec。如果 Gradle 版本将被更新,符号链接也将自动更新。话虽如此,使用 /usr/local/opt/gradle/libexec 仍然更安全。如果我有错误的话请纠正我。 - skryvets

5
在 Mac 上,最好的位置应该是:/Applications/Android Studio.app/Contents/gradle/gradle-2.14.1(将版本字符串替换为最新版本)。

7
只有当您使用Android Studio时,请@RuchirBaronia。 - Nick H
1
这根本不是一个答案。理想情况下应该是什么并不是需要回答的问题。 - wyde19
显然,Gradle的版本将在未来不断更新。尝试使用以下命令查看当前版本:ls -d "/Applications/Android Studio.app/Contents/gradle"/* - MarkHu

3
据我所知,应该是GRADLE_HOME而不是GRADLE_USER_HOME(请参见gradle安装http://www.gradle.org/installation)。
另一方面,我在Idea 13 Cardea中尝试了一下Gradle支持,我认为Idea没有自动发现gradle home。如果是这样的话,你可以在youtrack上提交一个问题。
此外,如果你使用gradle 1.6+,你可以使用Graldle支持来设置构建和包装器。我认为Idea会根据gradle项目自动发现包装器。 $ gradle setupBuild --type java-library $ gradle wrapper 注意:支持的库类型:basic、maven、java
祝好!

3
如果您使用MacPorts,则路径为:
/opt/local/share/java/gradle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接