Gradle fileTree 排除某些目录以外的所有目录

Ash*_*Ash 4 gradle build.gradle

我正在使用 fileTree 实用程序来获取文件列表,但需要排除除列表中选择的少数目录之外的所有目录。

我的目录结构:

node_modules/
    react-native/
    react/
    third-party-package/
    another-package/
Run Code Online (Sandbox Code Playgroud)

我需要排除除名为 react-native 和 react 的目录之外的所有目录。

目前我排除了所有 node_modules,但这不是我想要的......

fileTree(dir: '.', excludes: [ 'node_modules/**'] )

我将如何使用 fileTree 执行此操作?

Sta*_*lav 5

您可以为此使用闭包。像这样的东西:

fileTree(dir: '.').exclude {details ->
    (details.file.canonicalPath.contains("node_modules")
            && !details.file.canonicalPath.contains('react'))}
Run Code Online (Sandbox Code Playgroud)

您可以为要排除的文件提供自己的条件。这是一个最简单的方法,检查文件路径,是否包含node_modules和不包含react,如果条件为真,则排除此文件。

当然,您必须使其更具体,但您可以自由地为您的要求提供任何条件。