如何使用Gradle动态创建多个ZIP文件?

时间:2014-09-22 05:50:19

标签: gradle

我们有Gradle任务在我们的项目中创建ZIP文件。它就像吼叫。

task createZipFile(type: Zip) {

    destinationDir new File("$projectDir")
    archiveName 'ABC.zip'  

    from('bin/libs') {
        include '**/*.jar'      
    } 
    ...
}

build.dependsOn(createZipFile)

我们需要动态创建具有不同名称的多个zip文件。我们已经尝试过了。

['A', 'B', 'C', 'D'].each { def targetName -> 
    tasks.add(name: "zipIt$targetName", type: Zip) {  
        destinationDir = file("${targetName}.zip") 
        from('bin/libs') {
        include '**/*.jar'      
    }
    } 
} 

task zipAll(dependsOn: tasks.matching { Task task -> task.name.startsWith("zipIt")}) 

build.dependsOn(zipAll)

当我们尝试这个时,我们会收到以下错误。

  

找不到参数的方法add()[{name = zipItA,type = class   org.gradle.api.tasks.bundling.Zip},   build_1bct5119tk0khpl3p142j9qck5 $ _run_closure6_closure18 @ 47b8c9d

我们如何使用Gradle修复此问题?

1 个答案:

答案 0 :(得分:2)

该签名没有add方法,但您可以使用tasks.create("zipIt$targetName", type: Zip) { ... }。有关API详细信息,请查看Gradle Build Language Reference,其中包含进一步链接到Javadoc / Groovydoc的内容。