gradle - 使用 gradle Zip 任务在存档中包含单个目录
问题描述
我在项目的 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/contents-of-directory-B
zip 文件的实际内容: A/contents-of-directory-B
我该如何获得预期的结果。高度赞赏这方面的任何指导。我查看了 Gradle 文档的“使用字段”部分,但这对我的事业没有帮助。我期待一些包含目录的“包含”属性,但包含仅适用于文件并且没有给出目录示例。
解决方案
您可以使用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')