Gradle:将插件注入子项目

时间:2014-08-17 10:36:08

标签: gradle

我遇到gradle plugin来帮助我处理虚线属性名称。在这样使用时,它在单个项目中工作正常:

apply plugin: 'config'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.esyfur:gradle-config-plugin:0.4.+'
    }
}

task printProps() {
    println(config.grafana.url)
}

但是,我想在多个项目中使用这个插件(多模块),并且希望不要在每个项目中重复这样的初始化,而是以某种方式注入它以使其更易于管理。

我未能找到如何做或者是否可以做到。我试过例如在父build.gradle中使用:

allprojects {
    apply plugin: 'config'
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.esyfur:gradle-config-plugin:0.4.+'
    }
}

但它不起作用。 Gradle抱怨它无法找到属性' config'在任务上。

更新

在彼得的评论之后,我开始思考并从头开始创建一个示例项目,并逐步使其更接近我的真实项目'。我在描述我的设置时并不完全准确。在settings.gradle中,我使用

rootProject.children.each { project ->
    project.buildFileName = "${project.name}.gradle"
} 

导致此问题。一切正常当切换回build.gradle名称时。

1 个答案:

答案 0 :(得分:0)

问题是您的settings.gradle没有配置rootProject.buildFileName以匹配用于构建脚本的非标准文件名。因此,构建脚本不会被评估,其buildscript块永远不会生效。