如何让IntelliJ将gradle源与build.gradle关联起来

时间:2015-09-07 16:14:46

标签: intellij-idea gradle

为我的java项目编写gradle脚本时,特别是在编写build.gradle文件时,IntelliJ无法识别gradle API。

例如,像applydependencies configure这样的gradle方法调用在它们下面出现黑线,并且无法导航到方法声明,没有自动完成等

我设法通过将compile gradleApi()添加到构建的dependencies块来解决此问题。

但是,我不想在我的代码中使用这种显式依赖。

我尝试编辑IntelliJ的项目结构,并在我的模块上添加对gradle库(尝试gradle-core和gradle-all)的依赖,但这似乎没有效果。

有没有办法让IntelliJ将所有build.gradle文件与gradle源相关联?

4 个答案:

答案 0 :(得分:1)

我对Grails 3有类似的挫败感,它在创建应用程序时定义并运行包装器任务。改为"所有"包装器属性文件中的zip无法正常工作,因为这会一直变回" bin"拉链。

当理解了" gradle-wrapper.properties" file只是存储"包装器中的值"任务,如果在更改属性后运行此任务,它们会立即更改。

通过在包装器任务上设置一些属性可以很容易地解决这个问题:

wrapper.gradleVersion='3.2.1'
wrapper.distributionType=Wrapper.DistributionType.ALL

现在将项目导入IDEA可以智能地编辑build.gradle。

答案 1 :(得分:0)

当我在IDEA中选择build.gradle并打开它时,IDE会提示

You can configure Gradle wrapper to use distribution with sources. It will provide IDE with Gradle API/DSL documentation.

我选择Ok, apply suggestion!

项目刷新后

我可以使用代码完成 enter image description here

答案 2 :(得分:0)

在导入项目之前,将其配置为按照此处的说明使用可自定义的gradle包装: -

https://docs.gradle.org/current/userguide/gradle_wrapper.html

将任务添加到您的顶级项目中,如下所示: -

task wrapper(type: Wrapper) {
    println "Wrapper gradleVersion = '2.12'"
    gradleVersion = '2.12'
}

或任何最新版本。

确保在尝试导入intelliJ之前,可以使用gradle命令行构建项目,使用./gradlew命令,该命令将在您第一次构建时为您下载并安装gradle分发。

在你的机器和smartJ中设置你的java home,intelliJ home和gradle home变量(我的看起来像这样,你的设置可能会有所不同,这取决于你的设置和你机器周围黑客的历史......: -

(来自.bashrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

IntelliJPaths

导入时,选择可自定义的gradle包装器。如果一切顺利,当您打开项目的顶级build.gradle时,将要求您为gradle dsl配置源代码,这也会将您的gradle包装器属性文件更新为: -

#Thu Mar 31 14:04:00 BST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip

..改变是从... bin.zip到all.zip。就是这样。这给了我很长一段时间的悲伤,但这就是做到这一点的方法。 (至少在IntelliJ IDEA 2016.1 CE上......)

大部分都在 Dimitry's也回答,但是我无法使用默认包装器来工作,它必须是可自定义的包装器。

答案 3 :(得分:0)

我解决了以下问题:
1.如已经发布的答案中所述,configure gradle

  • 更新gradle/wrapper/gradle-wrapper.properties文件
    在distributionUrl中将bin更改为all,即
    distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip

    distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

  • 更新gradle task

wrapper {
    gradleVersion = '5.4.1'
    distributionType = Wrapper.DistributionType.ALL
}
  1. 在将项目导入到Idea之前,更新build.gradle并将Java和idea插件添加到插件列表中
plugins {
    id "java"
    id "idea"
}
  1. 从终端执行./gradlew clean build idea或仅执行./gradlew idea
  2. 将项目导入智能想法。
    转到首选项->构建,执行,部署-> BuildTools-> Gradle
    您可以看到options to choose
  3. 重新启动IntelliJ idea IDE。

因此,在上文中,我们已经配置了这两个选项,因此请选择其中两个选项,指定位置选项除外。
就这样...
之前
Before

之后
after

this答案中提到的自动完成功能

autocomplete