Hi,
We have a multimodule project in which we implemented some safeguards by creating a verifyWar target to check the generated warfile. This check runs for all the projects with apply our war.gradle
[war.gradle]
/**
* generic war configuration used by all modules which build wars
*
* add to your project using:
* apply from: "$rootProject.projectDir/war.gradle"
*/
apply plugin: 'war'
/* ... deleted irrelevant task definitions ... */
task verifyWar {
def destFile = file("$buildDir/verifyWar.txt")
dependsOn war
inputs.file war.archivePath
outputs.file destFile
doLast {
zipTree(war.archivePath).each { file ->
assert ("some-forbidden.jar" != file.name)
assert ("some-forbidden-resource.xml" != file.name)
}
ant.echo(file: destFile, message:"verified at " + new Date())
}
}
war.finalizedBy verifyWar
What happens however is that every time verifyWar
is run a .build/tmp/expandedArchives/myproject.war_{hash}
is created.
Gradle doesn’t clean it up afterwards, so if a developer doesn’t run clean often enough the new war is unpacked and the expandedArchives directory grows with each deploy. Which for an active project can be 8~15 times a day.
A few questions:
- Is there a flag on a zipFileTree that either make it clean up afterwards, or not expand at all?
- Is there another way maybe to just iterate the filenames, not using ZipFileTree whatsoever?
I’m not sure if I can aggressively delete the expandedArchives directory as a whole as I also see dependencies from the war
task such as from {zipFileTree (configurations.staticWebContent.archiveName}
and others being expanded there. Basically whenever we use zipFileTree.