同名类别字段的Gradle(Groovy?)语法

同名类别字段的Gradle(Groovy?)语法,gradle,Gradle,这对某些人来说是显而易见的,但不知怎么的,我却无法理解。我正在使用gradle脚本,其中有一部分类似于以下内容: javascript.source { dev { buildSrc 'some/path' include '*.js' exclude '*.min.js' } } 现在,我可以将其修改为: javascript.source { dev { buildSrc

这对某些人来说是显而易见的,但不知怎么的,我却无法理解。我正在使用gradle脚本,其中有一部分类似于以下内容:

javascript.source {
     dev {
           buildSrc 'some/path'
           include '*.js'
           exclude '*.min.js'
     }
}
现在,我可以将其修改为:

javascript.source {
     dev {
           buildSrc 'some/path'
           buildSrc 'some/other/path'
           include '*.js'
           exclude '*.min.js'
     }
}
之后,我调用javascript.source.dev.files(下面是一个SourceSet),并获取两个目录中的所有文件

现在我想做的是:

javascript.source {
     dev {
           buildSrc 'some/path'
           buildSrc 'some/other/path'
           include '*.js'
           exclude '*.min.js'
     }
}
def srcs=['some/path','some/other/path']

javascript.source {
    dev {
         buildSrc srcs
         include '*.js'
         exclude '*.min.js'
    }
}
然而,这种情况非常糟糕(一条关于从ArrayList转换为字符串的错误消息被弃用)

无论如何,我的问题是,“buildSrc”的重复在做什么?使用列表的等效语法是什么


提前谢谢

我不完全确定你的问题是否正确,但是。。。你试过这样的东西吗

def srcs = ['some/path', 'some/other/path']

javascript.source {
    dev {
        srcs.each { buildSrc it }            
        include '*.js'
        exclude '*.min.js'
    }
}

明亮的太棒了!那么在这种情况下,您将buildSrc称为什么?对我来说,它似乎不太像一个属性,因为否则它将是下面的一个列表,我可以设置列表值。我不能确定,因为我不知道您使用哪个特定的Gradle插件,但它似乎是一个方法(可能通过
missingMethod()
/
invokeMethod()
实现为一个动态方法)。但这并不重要。如果它与字符串一起工作,您可以在一个迭代中调用它,一个接一个地提供字符串列表。