Gradle:从汇编中排除分发zip任务

时间:2015-08-04 10:09:07

标签: gradle build.gradle

我正在使用distribution plugin。当我运行依赖于 gradle assemble gradle build 时,distTardistZip都会被触发,我最终都会遇到tarball和我的发行版的zip文件。我只需要一个tarball。同时运行时间和空间消耗(项目分布非常大)。

从高级gradle构建中排除distZip的干净方法是什么?我知道我可以使用gradle build -x distZip,但我希望运行简单的gradle build。我知道依赖关系可以用build.dependsOn.remove(<name>)排除,但我看到它被描述为不推荐。

感谢。

3 个答案:

答案 0 :(得分:27)

您可以尝试:

distZip.enabled = false

答案 1 :(得分:1)

由于此问题,我们的一个gradle版本开始失败。如上面的TmTom所述,完整的解决方案是

task deleteZip {
    configurations.archives.artifacts.removeAll {it.file =~ 'zip'}
}

tasks.install.dependsOn(deleteZip)

如果焦油也很麻烦,请添加:

    configurations.archives.artifacts.removeAll {it.file =~ 'tar'}

答案 2 :(得分:0)

如果您已经配置了这样的其他发行版

    distributions {
        mySpecialDistribution {
            contents {
                duplicatesStrategy = 'INCLUDE'
                ...
            }
    }

您必须禁用分发特定任务:

mySpecialDistributionDistZip.enabled = false

为了禁用所有发行版的 distZip,您可以执行以下操作:

gradle.taskGraph.whenReady { 
    graph -> graph.allTasks.findAll { it.name ==~ /.*DistZip/ }*.enabled = false
}