shade:shade

Full name:

org.apache.maven.plugins:maven-shade-plugin:2.4.3:shade

Description:

Mojo that performs shading delegating to the Shader component.

Attributes:

  • Requires a Maven project to be executed.
  • Requires dependency resolution of artifacts in scope: runtime.
  • The goal is thread-safe and supports parallel builds.
  • Binds by default to the lifecycle phase: package.

Optional Parameters

Name Type Since Description
artifactSet ArtifactSet - Artifacts to include/exclude from the final artifact. Artifacts are denoted by composite identifiers of the general form groupId:artifactId:type:classifier. Since version 1.3, the wildcard characters '*' and '?' can be used within the sub parts of those composite identifiers to do pattern matching. For convenience, the syntax groupId is equivalent to groupId:*:*:*, groupId:artifactId is equivalent to groupId:artifactId:*:* and groupId:artifactId:classifier is equivalent to groupId:artifactId:*:classifier. For example:
<artifactSet>
  <includes>
    <include>org.apache.maven:*</include>
  </includes>
  <excludes>
    <exclude>*:maven-core</exclude>
  </excludes>
</artifactSet>

createDependencyReducedPom boolean - Flag whether to generate a simplified POM for the shaded artifact. If set to true, dependencies that have been included into the uber JAR will be removed from the <dependencies> section of the generated POM. The reduced POM will be named dependency-reduced-pom.xml and is stored into the same directory as the shaded artifact. Unless you also specify dependencyReducedPomLocation, the plugin will create a temporary file named dependency-reduced-pom.xml in the project basedir.
Default value is: true.
createSourcesJar boolean - When true, it will attempt to create a sources jar as well
dependencyReducedPomLocation File 1.7 Where to put the dependency reduced pom. Note: setting a value for this parameter with a directory other than ${basedir} will change the value of ${basedir} for all executions that come after the shade execution. This is often not what you want. This is considered an open issue with this plugin.
Default value is: ${basedir}/dependency-reduced-pom.xml.
filters ArchiveFilter[] - Archive Filters to be used. Allows you to specify an artifact in the form of a composite identifier as used by artifactSet and a set of include/exclude file patterns for filtering which contents of the archive are added to the shaded jar. From a logical perspective, includes are processed before excludes, thus it's possible to use an include to collect a set of files from the archive then use excludes to further reduce the set. By default, all files are included and no files are excluded. If multiple filters apply to an artifact, the intersection of the matched files will be included in the final JAR. For example:
<filters>
  <filter>
    <artifact>junit:junit</artifact>
    <includes>
      <include>org/junit/**</include>
    </includes>
    <excludes>
      <exclude>org/junit/experimental/**</exclude>
    </excludes>
  </filter>
</filters>

finalName String - The name of the shaded artifactId. If you like to change the name of the native artifact, you may use the <build><finalName> setting. If this is set to something different than <build><finalName>, no file replacement will be performed, even if shadedArtifactAttached is being used.
generateUniqueDependencyReducedPom boolean 1.7.2 Create a dependency-reduced POM in ${basedir}/drp-UNIQUE.pom. This avoids build collisions of parallel builds without moving the dependency-reduced POM to a different directory. The property maven.shade.dependency-reduced-pom is set to the generated filename.
Default value is: false.
keepDependenciesWithProvidedScope boolean - When true, dependencies are kept in the pom but with scope 'provided'; when false, the dependency is removed.
minimizeJar boolean 1.4 When true, dependencies will be stripped down on the class level to only the transitive hull required for the artifact. Note: Usage of this feature requires Java 1.5 or higher.
outputDirectory File - The destination directory for the shaded artifact.
Default value is: ${project.build.directory}.
outputFile File 1.3 The path to the output file for the shaded artifact. When this parameter is set, the created archive will neither replace the project's main artifact nor will it be attached. Hence, this parameter causes the parameters finalName, shadedArtifactAttached, shadedClassifierName and createDependencyReducedPom to be ignored when used.
promoteTransitiveDependencies boolean - When true, transitive deps of removed dependencies are promoted to direct dependencies. This should allow the drop in replacement of the removed deps with the new shaded jar and everything should still work.
relocations PackageRelocation[] - Packages to be relocated. For example:
<relocations>
  <relocation>
    <pattern>org.apache</pattern>
    <shadedPattern>hidden.org.apache</shadedPattern>
    <includes>
      <include>org.apache.maven.*</include>
    </includes>
    <excludes>
      <exclude>org.apache.maven.Public*</exclude>
    </excludes>
  </relocation>
</relocations>
Note: Support for includes exists only since version 1.4.
shadeSourcesContent boolean - When true, it will attempt to shade the contents of the java source files when creating the sources jar. When false, it will just relocate the java source files to the shaded paths, but will not modify the actual contents of the java source files.
Default value is: false.
User property is: shadeSourcesContent.
shadeTestJar boolean - (no description)
Default value is: false.
shadedArtifactAttached boolean - Defines whether the shaded artifact should be attached as classifier to the original artifact. If false, the shaded jar will be the main artifact of the project
shadedArtifactId String - The name of the shaded artifactId. So you may want to use a different artifactId and keep the standard version. If the original artifactId was "foo" then the final artifact would be something like foo-1.0.jar. So if you change the artifactId you might have something like foo-special-1.0.jar.
Default value is: ${project.artifactId}.
shadedClassifierName String - The name of the classifier used in case the shaded artifact is attached.
Default value is: shaded.
shadedGroupFilter String - If specified, this will include only artifacts which have groupIds which start with this.
shaderHint String 1.6 You can pass here the roleHint about your own Shader implementation plexus component.
transformers ResourceTransformer[] - Resource transformers to be used. Please see the "Examples" section for more information on available transformers and their configuration.
useBaseVersion boolean 3.0 When true, the version of each dependency of the reduced pom will be based on the baseVersion of the original dependency instead of its resolved version. For example, if the original pom (transitively) depends on a:a:2.7-SNAPSHOT, if useBaseVersion is set to false, the reduced pom will depend on a:a:2.7-20130312.222222-12 whereas if useBaseVersion is set to true, the reduced pom will depend on a:a:2.7-SNAPSHOT
Default value is: false.

Parameter Details

artifactSet:

Artifacts to include/exclude from the final artifact. Artifacts are denoted by composite identifiers of the general form groupId:artifactId:type:classifier. Since version 1.3, the wildcard characters '*' and '?' can be used within the sub parts of those composite identifiers to do pattern matching. For convenience, the syntax groupId is equivalent to groupId:*:*:*, groupId:artifactId is equivalent to groupId:artifactId:*:* and groupId:artifactId:classifier is equivalent to groupId:artifactId:*:classifier. For example:
<artifactSet>
  <includes>
    <include>org.apache.maven:*</include>
  </includes>
  <excludes>
    <exclude>*:maven-core</exclude>
  </excludes>
</artifactSet>
  • Type: org.apache.maven.plugins.shade.mojo.ArtifactSet
  • Required: No

createDependencyReducedPom:

Flag whether to generate a simplified POM for the shaded artifact. If set to true, dependencies that have been included into the uber JAR will be removed from the <dependencies> section of the generated POM. The reduced POM will be named dependency-reduced-pom.xml and is stored into the same directory as the shaded artifact. Unless you also specify dependencyReducedPomLocation, the plugin will create a temporary file named dependency-reduced-pom.xml in the project basedir.
  • Type: boolean
  • Required: No
  • Default: true

createSourcesJar:

When true, it will attempt to create a sources jar as well
  • Type: boolean
  • Required: No

dependencyReducedPomLocation:

Where to put the dependency reduced pom. Note: setting a value for this parameter with a directory other than ${basedir} will change the value of ${basedir} for all executions that come after the shade execution. This is often not what you want. This is considered an open issue with this plugin.
  • Type: java.io.File
  • Since: 1.7
  • Required: No
  • Default: ${basedir}/dependency-reduced-pom.xml

filters:

Archive Filters to be used. Allows you to specify an artifact in the form of a composite identifier as used by artifactSet and a set of include/exclude file patterns for filtering which contents of the archive are added to the shaded jar. From a logical perspective, includes are processed before excludes, thus it's possible to use an include to collect a set of files from the archive then use excludes to further reduce the set. By default, all files are included and no files are excluded. If multiple filters apply to an artifact, the intersection of the matched files will be included in the final JAR. For example:
<filters>
  <filter>
    <artifact>junit:junit</artifact>
    <includes>
      <include>org/junit/**</include>
    </includes>
    <excludes>
      <exclude>org/junit/experimental/**</exclude>
    </excludes>
  </filter>
</filters>
  • Type: org.apache.maven.plugins.shade.mojo.ArchiveFilter[]
  • Required: No

finalName:

The name of the shaded artifactId. If you like to change the name of the native artifact, you may use the <build><finalName> setting. If this is set to something different than <build><finalName>, no file replacement will be performed, even if shadedArtifactAttached is being used.
  • Type: java.lang.String
  • Required: No

generateUniqueDependencyReducedPom:

Create a dependency-reduced POM in ${basedir}/drp-UNIQUE.pom. This avoids build collisions of parallel builds without moving the dependency-reduced POM to a different directory. The property maven.shade.dependency-reduced-pom is set to the generated filename.
  • Type: boolean
  • Since: 1.7.2
  • Required: No
  • Default: false

keepDependenciesWithProvidedScope:

When true, dependencies are kept in the pom but with scope 'provided'; when false, the dependency is removed.
  • Type: boolean
  • Required: No

minimizeJar:

When true, dependencies will be stripped down on the class level to only the transitive hull required for the artifact. Note: Usage of this feature requires Java 1.5 or higher.
  • Type: boolean
  • Since: 1.4
  • Required: No

outputDirectory:

The destination directory for the shaded artifact.
  • Type: java.io.File
  • Required: No
  • Default: ${project.build.directory}

outputFile:

The path to the output file for the shaded artifact. When this parameter is set, the created archive will neither replace the project's main artifact nor will it be attached. Hence, this parameter causes the parameters finalName, shadedArtifactAttached, shadedClassifierName and createDependencyReducedPom to be ignored when used.
  • Type: java.io.File
  • Since: 1.3
  • Required: No

promoteTransitiveDependencies:

When true, transitive deps of removed dependencies are promoted to direct dependencies. This should allow the drop in replacement of the removed deps with the new shaded jar and everything should still work.
  • Type: boolean
  • Required: No

relocations:

Packages to be relocated. For example:
<relocations>
  <relocation>
    <pattern>org.apache</pattern>
    <shadedPattern>hidden.org.apache</shadedPattern>
    <includes>
      <include>org.apache.maven.*</include>
    </includes>
    <excludes>
      <exclude>org.apache.maven.Public*</exclude>
    </excludes>
  </relocation>
</relocations>
Note: Support for includes exists only since version 1.4.
  • Type: org.apache.maven.plugins.shade.mojo.PackageRelocation[]
  • Required: No

shadeSourcesContent:

When true, it will attempt to shade the contents of the java source files when creating the sources jar. When false, it will just relocate the java source files to the shaded paths, but will not modify the actual contents of the java source files.
  • Type: boolean
  • Required: No
  • User Property: shadeSourcesContent
  • Default: false

shadeTestJar:

(no description)
  • Type: boolean
  • Required: No
  • Default: false

shadedArtifactAttached:

Defines whether the shaded artifact should be attached as classifier to the original artifact. If false, the shaded jar will be the main artifact of the project
  • Type: boolean
  • Required: No

shadedArtifactId:

The name of the shaded artifactId. So you may want to use a different artifactId and keep the standard version. If the original artifactId was "foo" then the final artifact would be something like foo-1.0.jar. So if you change the artifactId you might have something like foo-special-1.0.jar.
  • Type: java.lang.String
  • Required: No
  • Default: ${project.artifactId}

shadedClassifierName:

The name of the classifier used in case the shaded artifact is attached.
  • Type: java.lang.String
  • Required: No
  • Default: shaded

shadedGroupFilter:

If specified, this will include only artifacts which have groupIds which start with this.
  • Type: java.lang.String
  • Required: No

shaderHint:

You can pass here the roleHint about your own Shader implementation plexus component.
  • Type: java.lang.String
  • Since: 1.6
  • Required: No

transformers:

Resource transformers to be used. Please see the "Examples" section for more information on available transformers and their configuration.
  • Type: org.apache.maven.plugins.shade.resource.ResourceTransformer[]
  • Required: No

useBaseVersion:

When true, the version of each dependency of the reduced pom will be based on the baseVersion of the original dependency instead of its resolved version. For example, if the original pom (transitively) depends on a:a:2.7-SNAPSHOT, if useBaseVersion is set to false, the reduced pom will depend on a:a:2.7-20130312.222222-12 whereas if useBaseVersion is set to true, the reduced pom will depend on a:a:2.7-SNAPSHOT
  • Type: boolean
  • Since: 3.0
  • Required: No
  • Default: false