我的目标是拥有一个其他构建文件可以在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”。出于专有原因,我在照片中删除了我的根文件夹。我缺少什么?
我的最终目标是在外部定义一个类,它可以向我返回一个我可以在构建脚本中使用的闭包。 @Opal
答案 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