我有一个Gradle构建脚本,它变得太大了,所以我创建了一个实用程序类。 在这个类中我想使用Gradle fileTree(或任何其他Gradle类),我该怎么做? 要清楚,这是在build.gradle:
ext {
utils = new Utils()
}
和Utils.groovy(在buildSrc / src / main / groovy中):
def chopBackgroundImage(String inPath, String outPath, int scale) {
new File(outPath).mkdirs();
def tree = fileTree(dir: inPath, include: '*.png') // doesnt work
}
答案 0 :(得分:2)
fileTree
是在Project界面上定义的方法,因此需要将project
实例传递给方法并导入Project
Utils
类。 Utils
应如下所示:
import org.gradle.api.Project
public class Utils {
def chopBackgroundImage(Project project, String inPath, String outPath, int scale) {
new File(outPath).mkdirs();
def tree = project.fileTree(dir: inPath, include: '*.png')
}
}
通过添加以下内容,在Project
修改 build.gradle 中访问buildSrc
:
buildscript {
dependencies {
gradleApi()
}
}
当然 - 因为groovy是一种动态语言chopBackgroundImage
可以通过以下方式定义:
def chopBackgroundImage(project, inPath, outPath, scale) {
new File(outPath).mkdirs()
def tree = project.fileTree(dir: inPath, include: '*.png')
}
不需要依赖! ;)