Gradle'申请来自'导入导致'没有此类财产'问题

时间:2014-08-11 13:56:46

标签: gradle

我正在使用Ant将建筑物从建筑物转换为建筑物。该系统有多个顶级项目,它们共享一个按项目定制的公共构建系统。

我一直在通过将逻辑直接写入build.gradle文件来对新构建系统进行原型设计。随着我越来越接近最终系统,我需要将大部分逻辑拉出到模板构建中,所有项目都可以根据需要进行扩展。我还将模板构建为特定于功能的模块。

目录结构

buildsupport/
  - gradle/
      - master-template.gradle
      - legacy-properties.gradle
  - build.gradle
main_module/
  - build.gradle
  - settings.gradle
module1/
  - build.gradle
module2/
  - build.gradle

buildsupport组件在项目之间共享,包含模板构建和JUnit类别定义。 main_module是包含顶级Gradle构建文件的主要模块,module1module2是项目的子模块。

主template.gradle

apply from: 'legacy-properties.gradle'

allprojects {
    apply plugin: 'java'

    ...
}

遗留-properties.gradle

configure(allprojects.findAll {it.name != 'buildsupport'}) {
    ...
}

main_module /的build.gradle

buildscript {
    apply from: '../buildsupport/gradle/master-template.gradle', to: this.buildscript
}

问题

当我尝试从main_module目录运行gradle时,我从Gradle收到以下错误:

* Where:
Script '[redacted]\buildsupport\gradle\legacy-properties.gradle' line: 6

* What went wrong:
A problem occurred evaluating script.
> No such property: allprojects for class: org.gradle.api.internal.initialization.DefaultScriptHandler

(第6行是buildscript {的“legacy-properties.gradle”行。)

如何让Gradle通过legacy-properties.gradle脚本将master-template.gradle正确导入main_module项目?

1 个答案:

答案 0 :(得分:0)

稍微搞乱之后,我发现我导入配置的顺序很重要。我在legacy-properties.gradle中的allprojects块之前应用master-template.gradle文件,这适用于java插件,该插件声明了sourceSets块。通过移动" apply from"在allprojects块之后,脚本现在编译。