buildSrc gradle文件夹未编译

时间:2015-07-21 01:09:26

标签: android groovy gradle build.gradle

我的目标是拥有一个其他构建文件可以在gradle中看到的公共类。我创建了一个名为buildSrc的文件夹,它位于我的android项目的根目录中。内容如下:

    class CountryFlavors {

    def Closure getFlavor() {
        return  callback;
    }

Closure  callback ={

    mock {
        applicationId "ca.mysite.mock"
    }
    prod {
        applicationId "ca.mysite.prod"

    }
}

}

从文档中可以看出,放入文件夹buildSrc的类会自动放入与我的android构建脚本相同的类路径中。但相反,最新发生的是无法找到的课程。我尝试在应用程序级别的build.gradle文件中引用该类,但它无法找到该类。以下是我如何称呼CountryFlavors类:

new CountryFlavors().getFlavor()

编译器认为无法找到此类。类文件在buildSrc中,我将其命名为“build.gradle”。出于专有原因,我在照片中删除了我的根文件夹。我缺少什么?enter image description here

我的最终目标是在外部定义一个类,它可以向我返回一个我可以在构建脚本中使用的闭包。 @Opal

1 个答案:

答案 0 :(得分:2)

尝试将CountryFlavor类放入:

buildSrc/src/main/groovy/CountryFlavor.groovy

https://docs.gradle.org/current/userguide/custom_tasks.html

为了回答你的问题,我创建了一个简单的项目。这是它的简化结构(我剪切.gradle,gradle包装器等):

C:.
|   build.gradle
|   settings.gradle
|               
+---buildSrc
|   |               
|   \---src
|       \---main
|           \---groovy
|                   CountryFlavors.groovy

build.gradle就是:

task myTask << {
    println new CountryFlavors().getFlavor()
}

我放入了getFlavor()方法:

println "This is my callback"

输出是:

gradle -q myTask

This is my callback
CountryFlavors$_closure1@3ce443f9