Can anyone explain/comment on this fraction of Groovy code?
task copyImageFolders(type: Copy) {
from(\'images\') {
include \'*.jpg\'
into
The short answer is it's calling from(sourcePath, configureAction)
.
Groovy has optional brackets in a number of cases and accepts the last parameter (if it's a closure) outside of brackets and in this case that's the closure that you're passing to from()
.
This is a good blog post explaining the different ways a closure can be passed to a method in Groovy if you want more examples and this offers more examples of optional brackets in general.
It's Syntactic Sugar, to make things easier to read (very useful for Gradle configuration)
In this case it's all about parentheses.
When a closure is the last parameter of a method call, like when using Groovy’s each{} iteration mechanism, you can put the closure outside the closing parentheses, and even omit the parentheses:
list.each( { println it } )
list.each(){ println it }
list.each { println it }
In your case, everything below is working fine :
from('images', {
include '*.jpg'
into 'jpeg'
})
from('images') {
include '*.gif'
into 'gif'
}
from 'images', {
include '*.gif'
into 'gif'
}