Ich versuche, eine abhängige Zip-Datei ohne das PARENT-Verzeichnis zu extrahieren, einige Dateien beim Extrahieren mit Gradle auszuschließen. HierWie extrahiert man ohne erstes Verzeichnis mit Gradle?
ist, was ich habe und das funktioniert aber fühlt sich nicht richtig und ich hoffe, es gibt einen besseren Weg, um dieses
Zip-Datei zu tun, die ich
jar tf parent-folder-name.zip
parent-folder-name/bin/something.sh
parent-folder-name/bin/something.bat
parent-folder-name/lib/somelib.jar
am Extrahieren
Option 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()
}
}
Option 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()
}
Für mich Option 2 fühlt sich besser, aber ich bin nicht sicher, ob es ein besserer Weg, dies zu tun in Gradle?
Nur vernetzen, dass die gleiche Frage auf Gradle Forum angesprochen wurde - http: // Foren. grdle.org/gradle/topics/how_to_extract_without_first_directory_using_gradle – Radim