gradle附加zip存档

qgelzfjb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(330)

我需要添加文件到现有的zip存档。我试图使用gradle zip任务,但它覆盖了我的档案。
我现在把这个问题解决如下

import java.nio.file.FileSystem
import java.nio.file.FileSystems
import java.nio.file.Files
import java.nio.file.Paths
import java.util.function.Consumer

task AddToZip() {
  doLast {
    FileSystem fs = FileSystems.newFileSystem(Paths.get("$pathToZip"), null)
    Files.walk(Paths.get("$rootDir/dir")).forEach(new Consumer<java.nio.file.Path>() {
      @Override
      void accept(java.nio.file.Path path) {
        java.nio.file.Path dest = fs.getPath(path.toString().substring("$rootDir".length()))
        if (path.toFile().isDirectory()) {
          Files.createDirectory(dest)
          return
        }
        Files.copy(path, dest)
      }
    })
    fs.close()
  }
}

有别的办法解决这个问题吗?

xuo3flqw

xuo3flqw1#

你可以用 Project.zipTree(...) 创建 FileTree 从原来的拉链。然后可以传递给 Zip.from(...) ```
task addToZip(type:Zip) {
from zipTree('path/to/original.zip')
from 'path/to/additional/file.txt'
archiveFileName = "updated.zip"
destinationDirectory = file("$buildDir/zips")
}

请参见project.ziptree(…)
请参见abstractcopytask.from(…)

相关问题