Gradle/Groovy syntax confusion

后端 未结 2 1448
青春惊慌失措
青春惊慌失措 2021-01-16 05:06

Can anyone explain/comment on this fraction of Groovy code?

task copyImageFolders(type: Copy) {
    from(\'images\') {
        include \'*.jpg\'
        into         


        
相关标签:
2条回答
  • 2021-01-16 05:13

    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.

    0 讨论(0)
  • 2021-01-16 05:35

    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'
    }
    
    0 讨论(0)
提交回复
热议问题