任何人都可以解释/评论这部分Groovy代码吗?
task copyImageFolders(type: Copy) {
from('images') {
include '*.jpg'
into 'jpeg'
}
from('images') {
include '*.gif'
into 'gif'
}
into 'build'
}
更具体地说是from method。 这是
from(sourcePaths)
或
from(sourcePath, configureAction)
如果它是带有2个参数的那个,为什么它以这种方式编写而不是像:
from('images', {
include '*.jpg'
into 'jpeg'
})
答案 0 :(得分:3)
简短的回答是它正在呼叫from(sourcePath, configureAction)
。
Groovy在许多情况下都有可选括号,并且在括号外接受最后一个参数(如果它是一个闭包),在这种情况下,这是你传递给from()
的闭包。
This是一篇很好的博客文章,解释了如果你想要更多的例子,可以将闭包传递给Groovy中的方法的不同方法,this提供更多可选括号的例子。
答案 1 :(得分:2)
它的Syntactic Sugar,使事情更容易阅读(对于Gradle配置非常有用)
在这种情况下,所有关于parentheses。
当闭包是方法调用的最后一个参数时,就像使用时一样 Groovy的每个{}迭代机制,你可以把闭包放在外面 结束括号,甚至省略括号:
list.each( { println it } )
list.each(){ println it }
list.each { println it }
在您的情况下,以下所有内容都正常运行:
from('images', {
include '*.jpg'
into 'jpeg'
})
from('images') {
include '*.gif'
into 'gif'
}
from 'images', {
include '*.gif'
into 'gif'
}