为我的java项目编写gradle脚本时,特别是在编写build.gradle文件时,IntelliJ无法识别gradle API。
例如,像apply
,dependencies
configure
这样的gradle方法调用在它们下面出现黑线,并且无法导航到方法声明,没有自动完成等
我设法通过将compile gradleApi()
添加到构建的dependencies
块来解决此问题。
但是,我不想在我的代码中使用这种显式依赖。
我尝试编辑IntelliJ的项目结构,并在我的模块上添加对gradle库(尝试gradle-core和gradle-all)的依赖,但这似乎没有效果。
有没有办法让IntelliJ将所有build.gradle文件与gradle源相关联?
答案 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!
答案 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
)
导入时,选择可自定义的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
wrapper {
gradleVersion = '5.4.1'
distributionType = Wrapper.DistributionType.ALL
}
plugins {
id "java"
id "idea"
}
./gradlew clean build idea
或仅执行./gradlew idea
因此,在上文中,我们已经配置了这两个选项,因此请选择其中两个选项,指定位置选项除外。
就这样...
之前
this答案中提到的自动完成功能