Gradle:将插件注入子项目

joj*_*lco 5 gradle

我遇到了gradle插件来帮助我处理虚线属性名称.在使用时,它在单个项目中工作正常:

apply plugin: 'config'

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

task printProps() {
    println(config.grafana.url)
}
Run Code Online (Sandbox Code Playgroud)

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

我没有找到如何做或如果可以做到.我在父build.gradle中尝试过使用这个:

allprojects {
    apply plugin: 'config'
}

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

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

更新

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

rootProject.children.each { project ->
    project.buildFileName = "${project.name}.gradle"
} 
Run Code Online (Sandbox Code Playgroud)

这导致了这个问题.一切正常当切换回build.gradle名称时.

Pet*_*ser 1

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