Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代

Posted

技术标签:

【中文标题】Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代【英文标题】:Gradle - how to iterate in fileTree only for certain type of file 【发布时间】:2018-11-07 13:41:14 【问题描述】:

在我的 gradle 任务中,我遍历 fileTree 并且一切正常:

myTask 
  fileTree("$project.projectDir/dir").visit  FileVisitDetails details ->
    exec 
      //do some operations
    
  

但现在我的目录中有不同类型的文件:

dir
├── sub1
│   ├── file1.json
│   └── file2.js
├── sub2
│   ├── file1.json
│   └── file2.js
└── sub3
    ├── file1.js
    └── file2.json

如何只迭代特定类型的文件?因为

"$project.projectDir/folder/dir/**/*.json"

不起作用。

感谢您的建议

【问题讨论】:

【参考方案1】:

您应该使用FileTree 中的matching 方法。它使用PatternFilterable 作为参数。

试试看:

fileTree("$project.projectDir/dir").matching 
    include "**/*.json"
.each 
    // do some operations

【讨论】:

有一些变化:fileTree("$project.projectDir/dir/").matching include "**/*.json" .visit FileVisitDetails details -> exec //do some operations 它可以工作! :) 感谢您的帮助

以上是关于Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代的主要内容,如果未能解决你的问题,请参考以下文章

如何在针对特定 Gradle 构建风格的同时从命令行运行单个单元测试方法

仅针对特定文件类型将菜单项添加到 Windows 上下文菜单

如何仅针对特定规则扫描java文件?

如何使用 Gradle 和 JUnit 5 仅运行特定测试?

仅针对 iPad 和 iPhone 的特定样式表

如何在 Visual Studio 代码中仅搜索特定文件类型?