有没有办法在Gradle中进行选择性通配符排除?

有没有办法在Gradle中进行选择性通配符排除?,gradle,build.gradle,Gradle,Build.gradle,假设我有一个Java项目,在src/main/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 in

假设我有一个Java项目,在src/main/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 include/excludes能够直观地工作,我希望它能够工作:

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

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

您在中指定的包含和排除顺序不相关。将其视为一组过滤器:

  • 将筛选出与任何包含不匹配的文件
  • 与任何排除项匹配的文件将被过滤掉
在你的情况下,我会尝试只使用includes

  • 包括a.java
  • 包括b.java
  • 包含除“myfolder”下的文件以外的所有内容

为了实现最后一个include,我将考虑向include方法传递一个闭包,而不是一个匹配模式:

我不认为android插件在“main/java”中搜索,如果删除exclude,会发生什么?我想只包括a.java和b.java。