【发布时间】: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