我的目标是拥有一个其他构建文件可以在gradle中看到的公共类。我已经创建了一个名为buildSrc的文件夹,它位于我的安卓项目的根目录中。内容如下所示:
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“。出于专有原因,我删除了照片中的根文件夹。我错过了什么?

我的最终目标是在外部定义一个类,它可以向我返回一个可以在构建脚本中使用的闭包。@Opal
发布于 2015-07-21 15:41:32
尝试将您的CountryFlavor类放入:
buildSrc/src/main/groovy/CountryFlavor.groovyhttps://docs.gradle.org/current/userguide/custom_tasks.html
为了回答你的问题,我创建了一个简单的项目。这是它的简化结构(我剪下了.gradle,gradle wrapper等):
C:.
| build.gradle
| settings.gradle
|
+---buildSrc
| |
| \---src
| \---main
| \---groovy
| CountryFlavors.groovybuild.gradle很简单:
task myTask << {
println new CountryFlavors().getFlavor()
}我放入getFlavor()方法:
println "This is my callback"输出为:
gradle -q myTask
This is my callback
CountryFlavors$_closure1@3ce443f9https://stackoverflow.com/questions/31528766
复制相似问题