当前位置: 首页 > 知识库问答 >
问题:

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

柳项明
2023-03-14

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

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'
    }
  }
}

但是排除覆盖后续的包括。

共有1个答案

傅穆冉
2023-03-14

您指定的顺序包括:

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

在你的情况下,我会尝试只使用包含

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

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

 类似资料:
  • 问题内容: 我有一些生成的CSS,想使用一些CSS可以选择例如 使用和忽略。类似于: 我可以生成更多的类,但想知道CSS是否可行。 问题答案: 您不能使用这样的通配符,但是要获得所需的结果(ID以开头和以结束),可以改用属性starts-with和ends-with选择器,如下所示: 记住,通过链接这样的多个属性选择器(以及类型选择器),您将对所有这些属性选择器进行同一个AND匹配。

  • 问题内容: 我了解到try catch语句的finally子句始终执行。但是有人对我说,有可能避免执行它(删除它不是一种选择)。 -有人怎么可能? -我也很好奇知道为什么有人要避免执行它? 问题答案: 使用该块中未捕获的异常将其杀死,或者将整个JVM杀死(这将杀死线程)。 除了不良的设计外,没有充分的理由停止执行块。如果不应该每次都运行它,则不要将其放在一个块中。 使用下面的测试代码,我运行了两种

  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 如果你曾经使用过构建工具,你可能会对遇到的问题感到很沮丧,构建工具不是应该自动帮你完成项目的构建吗?你不得不向性能、扩展性等妥协。 比如你在构建一个项目的发布版本时,你要把一个文件拷贝到指定的位置,你在项目的元数据那里添加了版本的描述,如果版本号匹配一个特定的数字时,就把文件从A拷贝到B处。如果你依赖XML来构建,你要实现这个任务就像噩梦一样,你只能通过非标准的机制来添加一些脚本到构建中,结果就是

  • 问题内容: 用Google搜索它,发现了大量代码。但是他们中的任何一个都给了我我想要的。我想使一个普通数组不可变。我尝试了这个: 但这不起作用,我可以将5分配给array [0] …有什么方法可以使该数组不可变? 问题答案: 如果要将 其用作数组 ,则不能。 您必须为其创建包装器,以便在上引发一个异常,但是没有足够的环绕将允许您在以下情况上引发异常: 当然,元素的不变性完全是另一回事! 注意: 为

  • 我试图使用JSoup从超文本标记语言文档中选择一些文本。 我感兴趣的超文本标记语言是表单的一部分: 我对获取任何