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

标签 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

zip文件的实际内容: A /目录目录B

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

最佳答案

您可以使用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')

关于gradle - 使用gradle Zip任务在存档中包含单个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53375977/

相关文章:

android - 现有 gradle 项目中的 Git 子模块

android - 调试时找不到局部变量

android - 错误 : In project 'app' a resolved Google Play services library dependency depends on another at an exact version

android - buildConfigField、resValue 和 manifestPlaceholders 之间有什么区别?

java - 自定义gradle插件+访问方法的返回值?

android - 找到路径为 'lib/arm64-v8a/libnode.so' 的 2 个文件 - nodejs-mobile-react-native 的 jniLibs 问题

java - 通过 gradle 构建后无法找到或加载主类

android - Android Studio,NavDrawer和支持库问题

android - Gradle无法解决:com.google.firebase:firebase-core:17.3.4

java - 如何使用 Gradle 和 Spring Boot 捕获构建信息