如何使用Gradle';什么是Java API?

如何使用Gradle';什么是Java API?,java,gradle,Java,Gradle,我正在用Java构建一个Gradle插件,因为我想利用一些Java库。作为插件的一部分,我需要列出和处理文件夹中的文件。我可以在gradle构建文件中找到许多这样做的示例: FileTree tree = fileTree(dir: stagingDirName) tree.include '**/*.md' tree.each {File file -> compileThis(file) } 但我如何使用Gradle的JavaAPI在Java中实现这一点呢 底

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

  FileTree tree = fileTree(dir: stagingDirName)
  tree.include '**/*.md'
  tree.each {File file ->
    compileThis(file)
  }
但我如何使用Gradle的JavaAPI在Java中实现这一点呢


底层的FileTree Java类具有非常灵活的输入参数,这使得它非常强大,但很难确定哪种类型的输入将实际工作。

实际上是相同的,例如
project.FileTree(someMap)
。甚至还有一个超负荷的
fileTree
方法,它只接受基本目录(而不是映射)。您可以使用for-each循环代替
each
,而不是闭包,您通常可以使用匿名内部类来实现
Action
接口(尽管
fileTree
似乎缺少这些方法重载)。报告中有细节。PS:您还可以利用Groovy的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()"
        }
    }

}
公共类MyPluginTask扩展了DefaultTask{
@任务行动
public void action()引发异常{
//sourceDir可以是字符串或文件
File sourceDir=新文件(getProject().getProjectDir(),“src/main/html”);
//或:
//字符串sourceDir=“src/main/html”;
ConfigurableFileTree cft=getProject().fileTree(sourceDir);
cft.包括(“***.html”);
//确保我们有一些输入。如果没有,抛出异常。
if(cft.isEmpty()){
//无需处理。输入设置可能不正确。警告用户。
抛出新异常(“错误:在sourceDir中找不到可处理文件:”+
sourceDir.getPath());
}
迭代器it=cft.Iterator();
while(it.hasNext()){
文件f=it.next();
System.out.println(“文件:+f.getPath()”
}
}
}