IntelliJ gradle - 未知属性

the*_*ous 5 intellij-idea gradle build.gradle

错误:

构建文件'C:\ Users\Me\Dev\project\app\build.gradle'行:21

  • 出了什么问题:评估根项目'app'时出现问题.无法为org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler类型的对象获取未知属性"libraries".

在app.gradle里面

dependencies{
    compile libraries.my_lib
    deploy libraries.my_lib
}
Run Code Online (Sandbox Code Playgroud)

在project.gradle中

ext.libraries = {
    my_lib:    'com.myCompany:my-lib:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

在pom.xml里面

<modules>
    <module>my-lib</modules>
</modules>
Run Code Online (Sandbox Code Playgroud)

在app.gradle中按CTRL + Space会libaries.显示可能自动完成的my_lib库,但在使用时gradle clean deploy,它会失败并返回上面的消息.

这只发生在我将IDE更新到最新的IntelliJ之后.

mad*_*ead 3

ext仅为调用它的项目定义扩展名。在您的情况下,libraries.my_lib是在project.gradle(我猜它build.gradleproject目录中)中定义的,因此在不同的构建文件中不可用(app.gradle,我猜这又是一个build.gradleapp目录中))除非project不是的父级app。子项目可以访问父项目的属性,这是共享的唯一方式ext:项目应该彼此相关。

顺便说一句,您可以在文件中定义属性gradle.properties。它们可能有很多,一个对应于您构建中的每个项目。将一个放在gradle.properties构建的根目录中,您可以将其内容应用到项目树的根目录中,从而使属性在任何地方都可用(这同样适用于ext根对象的块,如上一段所述)。