有什么方法可以在Gradle中进行选择性通配符排除吗?

时间:2014-06-04 20:24:22

标签: gradle build.gradle

假设我有一个带有src / main / java中的一堆源代码的Java项目,以及src / main / java / myfolder中的一些其他源代码:

src/main/java/myfolder/a.java
src/main/java/myfolder/b.java
src/main/java/myfolder/c.java
...
src/main/java/myfolder/z.java

从这个文件夹我只想包含a.java和b.java。有没有简单的方法呢?

如果Gradle包含/排除直观,我希望这可行:

sourceSets {
  main {
    java {
      include 'src/main/java/**'
      exclude 'main/java/myfolder/**'
      include 'main/java/myfolder/a.java'
      include 'main/java/myfolder/b.java'
    }
  }
}

但是排除会覆盖后续的包含。

1 个答案:

答案 0 :(得分:0)

您指定的订单包括&排除在内是不相关的。把它们想象成一组过滤器:

  • 将过滤掉与任何包含不匹配的文件
  • 将过滤掉与任何排除匹配的文件

在您的情况下,我会尝试仅使用包含

  • 包括a.java
  • 包括b.java
  • 包括在' myfolder'
  • 下的文件除外

为了实现最后一个包含,我会考虑将一个闭包传递给include方法而不是匹配模式:http://www.gradle.org/docs/current/javadoc/org/gradle/api/tasks/util/PatternFilterable.html#include(groovy.lang.Closure)