Tôi đang cố trích xuất tệp nén phụ thuộc không có thư mục PARENT, loại trừ một số tệp trong khi trích xuất bằng Gradle.Làm thế nào để trích xuất mà không có thư mục đầu tiên sử dụng Gradle?
Dưới đây là những gì tôi đã có và các công trình này nhưng không cảm thấy đúng và tôi hy vọng có một cách tốt hơn để làm tập tin
Zip này mà tôi đang giải nén
jar tf parent-folder-name.zip
parent-folder-name/bin/something.sh
parent-folder-name/bin/something.bat
parent-folder-name/lib/somelib.jar
Lựa chọn 1
task explodeToDist1(type: Copy) {
from zipTree(configurations.extractDist.singleFile)
exclude "**/lib/**"
eachFile {
def newPath = it.relativePath.segments[1..-1].join("/")
it.relativePath = RelativePath.parse(true, newPath)
}
into 'build/dist'
doLast {
def path = buildDir.getPath() + "/dist/parent-folder-name"
def dirToDelete = new File(path)
dirToDelete.deleteOnExit()
}
}
Lựa chọn 2
task explodeToDist2 << {
def unzipDir = new File('build/unzipTmp')
copy {
from zipTree(configurations.extractDist.singleFile)
into unzipDir
}
def rootZipDir = unzipDir.listFiles()[0]
fileTree(rootZipDir){
exclude "**/lib/**"
}.copy {
into 'src/dist'
}
unzipDir.deleteDir()
}
Đối với tôi phương án 2 cảm thấy tốt hơn nhưng tôi không chắc chắn nếu có một cách tốt hơn để làm điều này trong Gradle?
Chỉ cần một cross-liên kết cùng một câu hỏi đã được nêu ra tại diễn đàn Gradle - http: // diễn đàn. gradle.org/gradle/topics/how_to_extract_without_first_directory_using_gradle – Radim