Gradle分发插件提取关闭的常用部分

时间:2015-12-22 14:48:11

标签: groovy gradle build.gradle

我正在尝试使用gradle分发插件创建我的项目的几个发行版。

我成功但是有很多重复,我想知道是否有一种方法来定义闭包以覆盖不同发行版中的相似性?

这样的事情会很棒:

apply plugin: 'distribution'

def commonPart = { location ->
    into('a') {
        from("$projectDir/src/main/config/$location/A")
    }
    into('b') {
        from("$projectDir/src/main/config/$location/B")
    }
    ..
    <lots more>
}

distributions {

    firstPackage {
        contents {
            ['shared', 'concrete-a'].each commonPart
        }
    }

    secondPackage {
        contents {
            ['shared', 'concrete-b'].each commonPart
        }
    }
}

但我得到了这个:

  

无法为参数找到方法firstPackage()   [build_dt0cpe0f6o27n2ggb10318bwh $ _run_closure2 $ _closure10 @ 5e60e639] on   project':test.project'。

1 个答案:

答案 0 :(得分:1)

它将是:

apply plugin: 'distribution'

def commonPart = { location ->
    return {
         into('a') {
         from("$projectDir/src/main/config/$location/A")
       }
       into('b') {
         from("$projectDir/src/main/config/$location/B")
       }
    }
}

distributions {

    firstPackage {
        ['shared', 'concrete-a'].collect { contents commonPart(it) }
    }

    secondPackage {
        ['shared', 'concrete-b'].collect { contents commonPart(it) }  
    }
}

Here你可以找到一个演示。