Gradle: 从 assemble 中排除分发 zip 任务

Gradle: Exclude distribution zip task from assemble

我正在使用 distribution plugin。当我 运行 a gradle build 时,这取决于 gradle assemble,两者distTardistZip 被触发,我最终得到了我的发行版的 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
}