【问题标题】:How create multiple ZIP files dynamically using Gradle?如何使用 Gradle 动态创建多个 ZIP 文件?
【发布时间】:2014-09-22 05:50:18
【问题描述】:

我们有 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)

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

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

我们如何使用 Gradle 解决这个问题?

【问题讨论】:

  • 我建议你看看这个解决方案:copy-to-multiple-destinations-with-gradle-copy-task,看看你是否可以根据你的问题调整它。 trick 似乎是将参数放入 任务中。我将您的 [ A, B, C ] 列表放在一个变量中,并在任务正文中使用它。我认为,如果您仍然需要,可以使这种方法发挥作用。

标签: gradle


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    相关资源
    最近更新 更多