I am trying to create a task that looks inside a folder and zips all the folders within that folder to some output folder.
Initial state:
Folder1
-> project1
->code //some more files within project1
-> project2
->code
Target state:
Destination
project1.zip
project2.zip
I tried using the below code, but it is zipping all the content within the folder1
task myZip(type: Zip) {
from 'Folder1'
archiveName 'Compress.zip'
destinationDir file('build')
}
I probably might need to use some collections which contains the project1 and project2 info and iteratively zip to the destination folder. Having issues with this approach.
Each Gradle Zip
task can only create a single Zip file, as you can read here.
So, you need to create multiple tasks. Therefore, you can iterate over the subdirectories and create a new Zip
task for each one of them. The generated tasks can be bundled in a root task via dependsOn
:
task myZip() {
file('Folder1').eachDir { sub ->
dependsOn tasks.create("${name}_${sub.name}", Zip) {
from sub
baseName sub.name
destinationDir file('Destination')
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With