使用gradle Zip任务在存档中包含单个目录

时间:2018-11-19 13:45:16

标签: gradle build.gradle

我的项目的rootDir下有一个目录A。目录A具有子目录B,C,D,E等。

我只想创建B档案,而忽略其他档案。我已经编写了gradle任务来压缩目录B。

task ZipOnlyB(type: Zip){
archiveName = "ArchiveOfB.zip"
destinationDir = file ("${rootDir}/toSendToArtifactory")

from "${rootDir}/A/B"
}

上面的代码可以工作并创建一个名为 ArchiveOfB.zip 的存档。但是此档案文件不包含目录B。档案文件仅包含目录B的内容。

zip文件

预期内容: A / B /目录内容B

压缩文件的

实际内容 A /目录目录B

我如何才能获得预期的结果。在这方面的任何指导都是高度赞赏的。我已经查看了Gradle documnetaion的“使用技巧”部分,但这对我的事业没有帮助。我原本希望某些“ include”属性包含目录,但是include仅适用于文件,没有给出目录示例。

1 个答案:

答案 0 :(得分:1)

您可以使用into方法(请参阅https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:into(java.lang.Object))来指定存档中的目标目录

在这种情况下,您可以执行以下操作:

task ZipOnlyB(type: Zip){
    archiveName = "ArchiveOfB.zip"
    destinationDir = file ("${rootDir}/toSendToArtifactory")

    from  fileTree('A/B')
    into ('A/B')
}

这将创建包含“ B”目录及其内容的第一级目录“ A”的档案。如果您不希望该根目录“ A”,而只希望目录“ B”,则使用into ('B')