首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >buildSrc gradle文件夹未编译

buildSrc gradle文件夹未编译
EN

Stack Overflow用户
提问于 2015-07-21 09:09:26
回答 1查看 1.5K关注 0票数 4

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

代码语言:javascript
复制
    class CountryFlavors {

    def Closure getFlavor() {
        return  callback;
    }

Closure  callback ={

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

    }
}

}

从文档中可以看出,放置到文件夹buildSrc中的类将自动放入与我的android构建脚本相同的类路径中。但实际上发生的是找不到这个类。我试图在应用程序级别的build.gradle文件中引用这个类,但是找不到这个类。下面是我调用CountryFlavors类的方法:

代码语言:javascript
复制
new CountryFlavors().getFlavor()

编译器发现找不到这个类。这个类文件位于buildSrc中,我将其命名为"build.gradle“。出于专有原因,我删除了照片中的根文件夹。我错过了什么?

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

EN

回答 1

Stack Overflow用户

发布于 2015-07-21 15:41:32

尝试将您的CountryFlavor类放入:

代码语言:javascript
复制
buildSrc/src/main/groovy/CountryFlavor.groovy

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

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

代码语言:javascript
复制
C:.
|   build.gradle
|   settings.gradle
|               
+---buildSrc
|   |               
|   \---src
|       \---main
|           \---groovy
|                   CountryFlavors.groovy

build.gradle很简单:

代码语言:javascript
复制
task myTask << {
    println new CountryFlavors().getFlavor()
}

我放入getFlavor()方法:

代码语言:javascript
复制
println "This is my callback"

输出为:

代码语言:javascript
复制
gradle -q myTask

This is my callback
CountryFlavors$_closure1@3ce443f9
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31528766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档