gpt4 book ai didi

groovy - 如何在 Gradle 管理的 Groovy 类中实例化 FileTree?

转载 作者:行者123 更新时间:2023-12-03 03:15:14 24 4
gpt4 key购买 nike

我有一个 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
}

最佳答案

fileTree 是在 Project 上定义的方法接口(interface),因此需要将 project 实例传递给方法并在 Utils 中导入 Project 类。 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')
}

不需要任何依赖! ;)

关于groovy - 如何在 Gradle 管理的 Groovy 类中实例化 FileTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com