【问题标题】:How to get IntelliJ to associate Gradle sources with build.gradle?如何让 IntelliJ 将 Gradle 源与 build.gradle 关联?
【发布时间】:2015-09-07 16:14:46
【问题描述】:

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

例如,applydependenciesconfigure 之类的 Gradle 方法调用在它们下方出现一条黑线,并且无法导航到方法声明,没有自动完成等。

我设法通过将compile gradleApi() 添加到构建的dependencies 块来解决此问题。但是,我不想在我的代码中有这种显式依赖。

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

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

【问题讨论】:

    标签: intellij-idea gradle


    【解决方案1】:

    我解决了这个问题如下:

    1. 正如已经发布的答案中提到的,configure gradle
    • 更新gradle/wrapper/gradle-wrapper.properties文件
      在distributionUrl中将bin更改为all,即
      distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip

      distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
      [可选] 如果您使用的是旧版本的 gradle wrapper 并想升级,则执行

      ./gradlew wrapper --gradle-version 6.8.3 --distribution-type all
      
    • 更新gradle task(如果存在于构建文件中)

      wrapper {
          gradleVersion = '6.8.3'
          distributionType = Wrapper.DistributionType.ALL
      }
      
    1. 在将项目导入 IntelliJ-Idea IDE 之前,更新 build.gradle 并将 javaidea 插件添加到插件列表中
    plugins {
        id "java-library"
        id "idea"
    }
    
    1. 从终端执行./gradlew clean build idea 或简单地执行./gradlew idea
    2. 将项目导入 IntelliJ IDEA。
      转到Preferences --> build,Execution,Deployment --> BuildTools --> Gradle
      可以看
    3. 重启 IntelliJ IDEA IDE。

    所以上面我们已经配置了两个选项,所以选择其中一个,除了指定的位置选项。就是这样。

    之前

    之后

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

    【讨论】:

      【解决方案2】:

      我对 Grails 3 也有类似的不满,它在创建应用程序时定义并运行一个包装器任务。更改为包装器属性文件中的“all”zip 不起作用,因为这不断更改回“bin”zip。

      当理解“gradle-wrapper.properties”文件只是存储“wrapper”任务中的值时,这个问题得到了解决,如果在属性更改后运行此任务,它们会立即更改。

      这很容易通过在包装任务上设置一些属性来解决:

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

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

      【讨论】:

        【解决方案3】:

        当我在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!

        项目刷新后,我可以使用代码完成

        【讨论】:

        • 在您的图片中,它看起来对您有效。不过,我已经这样做了。这会将gradle-wrapper.properties 中的一行从distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip 更改为+distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-all.zip。但对我的项目没有影响。我仍然没有自动完成,没有方法识别,也无法导航到源代码。
        • 在导入gradle项目时,你选择use default gradle wrapper了吗?
        • 是的,我确实选择了“使用默认 gradle 包装器”。
        【解决方案4】:

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

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

        像这样向您的顶级项目添加一个任务:-

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

        或任何最新版本。

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

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

        (来自 .bashrc

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

        )

        当您进行导入时,请选择可自定义的 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 也回答了,但我无法使用默认 wrapper 让它工作,它必须是可定制的 wrapper。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-23
          • 2020-11-18
          • 1970-01-01
          • 2018-01-09
          • 1970-01-01
          相关资源
          最近更新 更多