【问题标题】:buildSrc gradle folder not compilingbuildSrc gradle 文件夹未编译
【发布时间】:2015-07-21 01:09:25
【问题描述】:

我的目标是拥有一个其他构建文件可以在 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”。出于专有原因,我在照片中删除了我的根文件夹。我错过了什么?

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

【问题讨论】:

    标签: android groovy gradle build.gradle


    【解决方案1】:

    尝试将 CountryFlavor 类放入:

    buildSrc/src/main/groovy/CountryFlavor.groovy
    

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

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

    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
    

    【讨论】:

    • 这还不够。 package 也需要定义,并且此类必须在 gradle 脚本开头导入。
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 2021-08-15
    • 2020-08-14
    • 1970-01-01
    • 2018-05-18
    • 2019-02-01
    • 1970-01-01
    • 2022-08-07
    相关资源
    最近更新 更多