java - Gradle 附加 zip 存档
问题描述
我需要将文件添加到现有的 zip 存档中。我尝试使用 Gradle Zip Task,但它覆盖了我的存档。
我现在已经解决了如下问题
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()
}
}
有没有其他方法可以解决这个问题?
解决方案
您可以使用从原始 zipProject.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")
}
推荐阅读
- angular - 使用 switchMap 处理 http 错误并返回空的 Observable
- laravel - 在选择(laravel)中仅显示一些特定值
- machine-learning - xView Dataset 400 训练图像丢失?
- javascript - 反应将数组添加到localStorage
- c# - System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配。” C# 错误
- python - 在 Ubuntu 18.04 和 python3.8 上出现错误“pip install mysqlclient”
- javascript - 使用 jquery 自动刷新图像
- php - 在 Laravel Mysql 项目中连接被拒绝,同时进行工匠迁移
- react-native - 服务器上的 React-native google/facebook 登录身份验证
- entity-framework-core - 实体框架核心 - 将参数传递给 Where IN 子句原始查询