【发布时间】:2014-09-15 09:13:53
【问题描述】:
我正在尝试在 gradle 构建的 TAR 文件中包含一个 ZIP 文件。我没疯,这是为了复制现有的 ant 脚本,由于各种业务原因,我无法更改分发布局。
- 我必须使用 whenReady 关闭 collect dependencies 没有问题
- whenReady 表示在 buildTar 任务完成之前不会构建 ZIP 文件,即使 buildTar 依赖于 buildZip。
- 我不能直接调用 tar {},因为 gradle 不支持这个
- Gradle 似乎不支持直接调用任务。
这是我的总体布局
task buildZip(type: Zip) {
gradle.taskGraph.whenReady {
// build zip file usual way with from blocks
from(...) {
}
from(...) {
}
}
doLast {
println "ZIP ready"
// could I call tar task from here??
}
}
task buildTar(type: Tar, dependsOn: buildZip) {
println "Building TAR"
from (buildZip.archivePath) {
}
... more stuff, installer script etc.
}
我使用 gradle :buildTar 看到的输出,即 TAR 在 ZIP 构建之前构建。
Building TAR
ZIP ready
更新。
Perryn Fowler 下面的评论正确地指出了这个问题,这是基于我对 gradle 中执行与配置的误解。
Tar 没有在 Zip 之前构建,Tar 任务正在 在执行 Zip 任务之前配置
更新。
这个问题不再需要,因为可以在 ZIP 任务中使用选项 duplicatesStrategy 以避免问题被 gradle.taskGraph.whenReady '修复'
【问题讨论】:
-
在 Zip 之前没有构建 Tar,在执行 Zip 任务之前正在配置 Tar 任务。见gradle.org/docs/current/userguide/…
-
@PerrynFowler 请您添加您的评论作为答案,我会接受。
标签: gradle build.gradle