如何在 Gradle 管理的 Groovy class 中实例化一个 FileTree?
How to instantiate a FileTree in a Groovy class managed by Gradle?
我有一个 Gradle 构建脚本,它变得太大了,所以我制作了一个实用程序 class。
在此 class 中,我想使用 Gradle fileTree(或任何其他 Gradle class),我该怎么做?
要清楚,这是在 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
}
fileTree
是在 Project 接口上定义的方法,因此需要将 project
实例传递给方法并在 [= 中导入 Project
class 16=]。 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
可在 buildSrc
中访问,请修改 build.gradle 添加以下内容:
buildscript {
dependencies {
gradleApi()
}
}
而且 - 当然 - 因为 groovy 是一种动态语言 chopBackgroundImage
可以按以下方式定义:
def chopBackgroundImage(project, inPath, outPath, scale) {
new File(outPath).mkdirs()
def tree = project.fileTree(dir: inPath, include: '*.png')
}
不需要依赖项! ;)
我有一个 Gradle 构建脚本,它变得太大了,所以我制作了一个实用程序 class。 在此 class 中,我想使用 Gradle fileTree(或任何其他 Gradle class),我该怎么做? 要清楚,这是在 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
}
fileTree
是在 Project 接口上定义的方法,因此需要将 project
实例传递给方法并在 [= 中导入 Project
class 16=]。 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
可在 buildSrc
中访问,请修改 build.gradle 添加以下内容:
buildscript {
dependencies {
gradleApi()
}
}
而且 - 当然 - 因为 groovy 是一种动态语言 chopBackgroundImage
可以按以下方式定义:
def chopBackgroundImage(project, inPath, outPath, scale) {
new File(outPath).mkdirs()
def tree = project.fileTree(dir: inPath, include: '*.png')
}
不需要依赖项! ;)