【问题标题】:Gradle: Exclude distribution zip task from assembleGradle:从组装中排除分发 zip 任务
【发布时间】:2015-10-26 16:32:25
【问题描述】:

我正在使用distribution plugin。当我运行依赖于 gradle assemblegradle build 时,distTardistZip 都会被触发,我最终得到一个 tarball 和一个 zip 文件我的分布。我只需要一个压缩包。两者都运行很费时间和空间(项目分布非常大)。

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

谢谢。

【问题讨论】:

  • 对于其他搜索:应用程序插件隐式应用分发插件。

标签: gradle build.gradle


【解决方案1】:

你可以试试:

distZip.enabled = false

【讨论】:

  • 当你同时使用maven plugin时,gradle install会失败,因为它会尝试上传压缩包。解决方案是同时删除 zip 工件,如下所示:configurations.archives.artifacts.removeAll {it.file =~ 'zip'}
【解决方案2】:

由于这个问题,我们的一个 gradle 构建开始失败。正如 TmTom 上面提到的,完整的解决方案是

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

tasks.install.dependsOn(deleteZip)

如果 tars 也很麻烦,请添加:

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

【讨论】:

  • 这对我来说很接近,但我需要一个 doLast 块:task doNotUploadDistribution { doLast { configurations.archives.artifacts.removeAll {it.classifier == 'distribution'} } }
【解决方案3】:

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

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

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

mySpecialDistributionDistZip.enabled = false

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2018-12-05
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多