johnrengelman/shadow — pull request #32 by tcovo (2014-01-14 13:29:01+00:00)
Title: support filtering contents of file and fileTree dependencies

When filters are used to choose what files to include/exclude when copying the contents of dependencies, the filters are not applied to the contents of SelfResolvingDependencies (which includes file and fileTree dependencies). This causes a problem for me because I have a file dependency which has a signature file in the jar, and the shadow plugin isn't filtering it out.

This pull request has a minimally-invasive fix to ShadowTask.groovy to make the filters apply to SelfResolvingDependencies. A cleaner solution might involve replacing `Map artifacts` (ShadowTask.groovy:150) with a different data structure which can hold all jar/artifactId pairs.

I created an integration test by cloning the includeFileDependencies test. I would have enhanced that existing test to verify the additional behavior, but since the jar used for testing only includes a single file, it's hard to test jar inclusion and file exclusion at the same time (unless a file is added to the jar - but for git's sake I try to avoid changing binary files).