【问题标题】:Gradle: No such property for class error thrown in sub-module?Gradle:子模块中抛出的类错误没有这样的属性?
【发布时间】:2016-03-24 04:07:00
【问题描述】:

我正在尝试使用this answer 中描述的技术在我的 gradle 项目中声明dependencies

但是当我这样做时,我得到了这个错误:

No such property: libraries for class

我该如何解决这个问题?

在顶级 build.gradle 中声明为属性的依赖项如下:

ext.libraries = [


junit: 'junit:junit:4.10'

]

尝试在 模块级别 build.gradle 中检索依赖项(抛出错误):

testCompile([
              libraries.junit
])

抛出错误:

No such property: libraries for class: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler

【问题讨论】:

  • 你能不能试试:project.libraries.junit?
  • 使用这个有什么区别?我试过了,但我得到了同样的错误?
  • 应该是一样的,但有时可能有意义。你有重现问题的在线演示吗?
  • 不,我不抱歉,您的意思是将“属性”前缀添加到顶级 build.gradle、子模块或两者中?感谢您的帮助
  • 好的,项目结构是什么?

标签: java gradle properties dependencies


【解决方案1】:
  1. 在您的顶级settings.gradle 中,包含您的子项目:

    include 'subproject'
    
  2. 在您的顶级 build.gradle 中定义您的 ext 属性:

    ext.libraries = [junit: 'junit:junit:4.10']
    

它不必是地图,如果您只使用 1 个值,但我坚持使用您的格式。

  1. 要在您的subproject build.gradle 中使用它:

    dependencies{
      testCompile libraries.junit 
    }
    

【讨论】:

  • 好的,所以我不需要在任何地方都有“项目”?
  • project.ext.varname 是 ext 变量的完全限定的正确分辨率。只是varname 是简写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2016-01-04
  • 2015-11-12
相关资源
最近更新 更多