【问题标题】:Gradle groovy syntax "configurations {all*.exclude ...}" [duplicate]Gradle groovy 语法“配置 {all*.exclude ...}”[重复]
【发布时间】:2020-01-10 18:09:11
【问题描述】:

我遇到了 Gradle Groovy DSL sn-p,如下所示:

configurations {
  all*.exclude group:'org.apache.hadoop', module:'hadoop-core'
}

all*.exclude 完全让我感到困惑。上面的块是否等同于下面的块?

configurations {
  all {
    exclude group:'org.apache.hadoop', module:'hadoop-core'
  }
}

另外,是否有解释all*.exclude 语法的参考资料?

谢谢。

【问题讨论】:

    标签: java gradle groovy


    【解决方案1】:

    结果确实是一样的。

    all 是一个包含所有配置对象列表的属性。 *. 部分是 Groovy 语法,意思是“对列表的每个元素执行操作”。它叫做 spread operator

    here 提出了同样的问题。

    【讨论】:

      【解决方案2】:

      我们可以轻松地从特定配置中排除传递依赖。要将它们从所有配置中排除,我们可以使用 Groovy 的扩展点运算符并在每个配置上调用 exclude() 方法。我们只能将组、模块或两者都定义为 exclude() 方法的参数。

      configurations {
      all*.exclude group:'org.apache.hadoop', module:'hadoop-core'
      

      }

      相当于:

      configurations {
      all.collect { configuration ->
          configuration.exclude group: 'org.apache.hadoop', module: 'hadoop-core'
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2014-05-13
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多