gpt4 book ai didi

java - 如何使用 Gradle 的 Java API 定义过滤后的 FileTree?

转载 作者:行者123 更新时间:2023-11-29 09:00:20 24 4
gpt4 key购买 nike

我正在用 Java 构建一个 Gradle 插件,因为我想利用一些 Java 库。作为插件的一部分,我需要列出和处理文件的文件夹。我可以在 gradle 构建文件中找到许多如何执行此操作的示例:

  FileTree tree = fileTree(dir: stagingDirName)
tree.include '**/*.md'
tree.each {File file ->
compileThis(file)
}

但是我如何使用 Gradle 的 Java api 在 Java 中执行此操作?

底层的 FileTree Java 类具有非常灵活的输入参数,这使得它非常强大,但要弄清楚哪种输入会实际起作用却非常困难。

最佳答案

这是我在基于 java 的 gradle 任务中的做法:

public class MyPluginTask extends DefaultTask {

@TaskAction
public void action() throws Exception {

// sourceDir can be a string or a File
File sourceDir = new File(getProject().getProjectDir(), "src/main/html");
// or:
//String sourceDir = "src/main/html";

ConfigurableFileTree cft = getProject().fileTree(sourceDir);
cft.include("**/*.html");

// Make sure we have some input. If not, throw an exception.
if (cft.isEmpty()) {
// Nothing to process. Input settings are probably bad. Warn user.
throw new Exception("Error: No processable files found in sourceDir: " +
sourceDir.getPath() );
}

Iterator<File> it = cft.iterator();
while (it.hasNext()){
File f = it.next();
System.out.println("File: "+f.getPath()"
}
}

}

关于java - 如何使用 Gradle 的 Java API 定义过滤后的 FileTree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847621/

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