# Filtering Shadow Jar Contents

The final contents of a shadow JAR can be filtered using the exclude and include methods inherited from Gradle's Jar task type.

Refer to the Jar (opens new window) documentation for details on the various versions of the methods and their behavior.

When using exclude/include with a ShadowJar task, the resulting copy specs are applied to the final JAR contents. This means that, the configuration is applied to the individual files from both the project source set or any of the dependencies to be merged.

// Exclude a file from Shadow Jar
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
   exclude 'a2.properties'
}

Excludes and includes can be combined just like a normal Jar task, with excludes taking precedence over includes. Additionally, ANT style patterns can be used to match multiple files.

// Configuring output using ANT patterns
tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
   include '*.jar'
   include '*.properties'
   exclude 'a2.properties'
}