Gradle: 从 assemble 中排除分发 zip 任务
Gradle: Exclude distribution zip task from assemble
我正在使用 distribution plugin。当我 运行 a gradle build 时,这取决于 gradle assemble,两者distTar
和 distZip
被触发,我最终得到了我的发行版的 tarball 和 zip 文件。我只需要一个压缩包。 运行宁既是时间又是space消耗(项目分布非常大)。
从高级 gradle 构建中排除 distZip
的干净方法是什么?我知道我可以使用 gradle build -x distZip
但我想 运行 普通 gradle build
。我知道 build.dependsOn.remove(<name>)
可以排除依赖关系,但我看到它被描述为不推荐。
谢谢。
你可以试试:
distZip.enabled = false
我们的一个 gradle 构建由于这个问题开始失败。正如 TmTom 在上面提到的,完整的解决方案是
task deleteZip {
configurations.archives.artifacts.removeAll {it.file =~ 'zip'}
}
tasks.install.dependsOn(deleteZip)
如果 tars 也有问题,请添加:
configurations.archives.artifacts.removeAll {it.file =~ 'tar'}
如果您像这样配置了其他发行版
distributions {
mySpecialDistribution {
contents {
duplicatesStrategy = 'INCLUDE'
...
}
}
您必须禁用分发特定任务:
mySpecialDistributionDistZip.enabled = false
为了禁用所有发行版的 distZip,您可以执行以下操作:
gradle.taskGraph.whenReady {
graph -> graph.allTasks.findAll { it.name ==~ /.*DistZip/ }*.enabled = false
}
我正在使用 distribution plugin。当我 运行 a gradle build 时,这取决于 gradle assemble,两者distTar
和 distZip
被触发,我最终得到了我的发行版的 tarball 和 zip 文件。我只需要一个压缩包。 运行宁既是时间又是space消耗(项目分布非常大)。
从高级 gradle 构建中排除 distZip
的干净方法是什么?我知道我可以使用 gradle build -x distZip
但我想 运行 普通 gradle build
。我知道 build.dependsOn.remove(<name>)
可以排除依赖关系,但我看到它被描述为不推荐。
谢谢。
你可以试试:
distZip.enabled = false
我们的一个 gradle 构建由于这个问题开始失败。正如 TmTom 在上面提到的,完整的解决方案是
task deleteZip {
configurations.archives.artifacts.removeAll {it.file =~ 'zip'}
}
tasks.install.dependsOn(deleteZip)
如果 tars 也有问题,请添加:
configurations.archives.artifacts.removeAll {it.file =~ 'tar'}
如果您像这样配置了其他发行版
distributions {
mySpecialDistribution {
contents {
duplicatesStrategy = 'INCLUDE'
...
}
}
您必须禁用分发特定任务:
mySpecialDistributionDistZip.enabled = false
为了禁用所有发行版的 distZip,您可以执行以下操作:
gradle.taskGraph.whenReady {
graph -> graph.allTasks.findAll { it.name ==~ /.*DistZip/ }*.enabled = false
}