one way to start you could create dedicated tasks for each zip. This can be done in a loop:
["source1", "source2", "source3"].each{ sourceName ->
tasks.create("pmd${sourceName}", Pmd){
reports.html.reportsDir = "$buildDir/reports/pmd${sourceName}"
source = zipTree("file/to/$sourceName.zip")
...
}
}
cheers