如何在IDEA中定义Gradle的家?


390

我正在尝试将Gradle项目导入IntelliJ,当我进入Gradle Home文本框时,它不会自动填充,也不会Gradle Home在有效位置中输入结果的路径-我设置了GRADLE_USER_HOME环境变量(我认为是!)正确的路径,并且我已经能够成功地将同一项目导入Eclipse。有什么建议么?


是的,JetBrains网站上的讨论似乎表明这是符号链接的问题-请在此处查看Denis.Zhdanov的
josh-cain

1
好问题。您想为此选择一个有效答案吗?不要讲究点-我建议@ trenton's。您可能还想提到问题中涉及的操作系统。
akauppi,2016年

1
如果选择“使用默认gradle包装器(推荐)”,则无需设置Gradle Home。不幸的是,它们并没有为输入框显示灰色-它们只是表明当您将鼠标悬停在输入框上时,该光标已被您使用的光标类型禁用。
Andrew Grimm

Answers:


479

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

task getHomeDir {
    doLast {
        println gradle.gradleHomeDir
    }
}

并命名build.gradle

然后运行:

gradle getHomeDir

如果您安装了自制软件,请使用brew info gradle查找基本路径(即/usr/local/Cellar/gradle/1.10/),然后追加libexec

在Kotlin中,如果您使用build.gradle.kts以下相同的任务:

tasks.register("getHomeDir") {
    println("Gradle home dir: ${gradle.gradleHomeDir}")
}

10
对于那些使用Linux Mint / Ubuntu的用户,则/usr/share/gradle是此gradle脚本的输出。
亚瑟

3
@Steve乐意提供帮助。今晚我是自己的受益者。twitter.com/TrentonL/status/729546995686248448
特伦顿

3
这对我有用,但是太愚蠢了。我使用Gradle的SDK Manager安装Gradle。IntelliJ为什么不能使用它?
AutonomousApps

在Fedora 25上,它也是/ usr / share / gradle。
Uri Simchoni

2
对于Arch Linux,它是:/usr/share/java/gradle
SirWojtek,

273

通过Homebrew安装在Mac上,路径

/usr/local/opt/gradle/libexec

优于

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

因为前者将在版本升级后继续存在。


Android Studio(无论是从AS 1.3开始)也是如此。
詹姆斯

不错,我最终使用这只野兽来设置我的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而不是仅which gradle在shell中调用呢?
Mike Young,

@MikeYoung,我当时没有安装realpath。nb:我现在export GRADLE_HOME="$(brew --prefix gradle)/libexec/"按照@delitescene的建议使用。如果您使用brew,请ls "$(brew --prefix gradle)/libexec/"ls "$(which gradle)/libexec/"osx 进行比较。
mlo55 '18


46

如果使用的是IntelliJ,请执行以下操作。

  1. 关闭专案
  2. (重新)打开项目
  3. 您将在右下方看到“导入gradle项目”消息。点击。
  4. 选择“使用默认的gradle包装器”。不是“使用本地gradle分发”

在此处输入图片说明

就这样。


如果您选择“使用默认的gradle包装器”,是否不需要为Gradle home提供产品?
Andrew Grimm

答:可以。怪我以前没注意到过的糟糕的用户体验。
Andrew Grimm

1
"Use gradle 'wrapper' task configuration"为我工作
-idk

1
如果您想让IDEA从实际的构建脚本中为您定义gradle版本,则选择“使用gradle'wrapper'任务配置”
Cloudish123 '18

@AndrewGrimm就我而言,此单选按钮已禁用。所以我不能选择它。有任何想法吗?
Mikheil Zhghenti

42

这就是帮助我解决导入Gradle项目时没有为IDEA设置Gradle主页的问题的原因。

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

A.默认包装器(推荐)

如果可以,请选择此推荐选项。如果显示为灰色,请参阅选项C,然后应为所有后续项目设置默认值。

B. Gradle“包装器”任务配置

如果您想让IDEA从构建脚本中为您定义gradle版本

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

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

在此处输入图片说明

(如果您不想在项目之间共享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)。请参阅/unix/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现在应该允许您单击确定 在此处输入图片说明

对我而言,无论做什么,我都会得到:原因:无法找到到所请求目标的有效认证路径
slashdottir

@slashdottir可能与您使用的网络有关(如果在工作中或在大学中),或者您可能需要关闭IDEA,重新启动计算机并从新项目中重建。参见stackoverflow.com/questions/42415666/…,即使它是Android-studio,它可能仍然有用。让我知道这是否有帮助。
Cloudish123

1
最终只是从comand-line转到了构建gradle-那样就解决了-thx
slashdottir

9

这仅是针对MAC的指令。我有同样的问题。我通过在中配置解决$GRADLE_HOME.bash_profile。这是您的操作方式:

  • 打开.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

9

C:\ Users \ <用户名> \。gradle \ wrapper \ dists \ gradle-<_ version> -all \ << number_random_maybe> \ gradle-<_ version>

\ Android studio \ gradle不适用于我。

并且从bitbucket导入(克隆)项目时未配置“默认gradle包装器”

如果导致找出路径的问题,这是我的路径:

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


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

6

在Mac上,理想情况下应位于: /Applications/Android Studio.app/Contents/gradle/gradle-2.14.1

(用最新版本替换版本字符串)


7
@RuchirBaronia仅当您使用Android Studio时
hitch.united

那根本不是答案。它应该“理想地”是不需要回答的。
wyde19

显然,多年来Gradle的版本将不断提高。尝试一下以查看您当前拥有的内容:ls -d "/Applications/Android Studio.app/Contents/gradle"/*
MarkHu

3

AFAIK是GRADLE_HOME而不是GRADLE_USER_HOME(请参阅gradle安装http://www.gradle.org/installation)。

另一方面,我在Idea 13 Cardea的Gradle支持下发挥了一些作用,我认为Gradle家并不是由Idea自动发现的。如果是这样,您可以在youtrack中提出问题。

另外,如果使用gradle 1.6+,则可以使用Graldle支持来设置构建和包装。我认为想法会自动发现基于包装的gradle项目。

$ gradle setupBuild --type java-library

$ gradle包装

注意:支持的库类型:基本,maven,java

问候



2

在选择gradle路径之前,我必须先设置Project SDK。正确设置后,我必须在“从Gradle导入项目”对话框中选择“使用默认的gradle包装器(推荐)”。

如果我使用brew删除gradle,仍然可以使用:

$ brew remove gradle

在此处输入图片说明



1

我在无法找到我的班级时遇到了一些奇怪的错误,我不得不右键单击src文件夹(呈红色),将其“设为目录”->源文件夹根



0

在删除损坏的JDK之前,我无法接受Gradle JVM的选择

下面的窗口来自文件->其他设置->新项目的结构...

Gradle JVM,即JDK主目录

一旦删除下面的Gradle JVM错误,我在这里有一个红色的1.8 JDK SDK条目,我可以继续进行下一步

Gradle JVM错误


-1

如果您使用的是Mac,则最有可能是/usr/local/gradle-2.0例如gradle home 。

首选IDEA搜索gradle并按照上面的说明设置gradle home。它应该工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.