Unreleased - 2025-xx-xx
Added
- Support skipping string constant remapping. (#1401)
- Let
assembledepend onshadowJar. (#1524) - Fail build when inputting AAR files or using Shadow with AGP. (#1530)
Fixed
- Honor
options.releasefor target JVM attribute. (#1502)
9.0.0-rc1 - 2025-07-02
This release is a major update from the 8.3.x series. The plugin has been fully rewritten in Kotlin, bringing significant improvements to maintainability, performance, and future extensibility. It introduces many new features, enhancements, and bug fixes, and includes several breaking changes. Please review the changelog carefully and consult the new doc site before upgrading.
BREAKING
- Rewrite this plugin in Kotlin. (#1012)
Some APIs are marked as
internal, and there are serial ABI changes. - Remove Develocity integration. (#1014)
- Migrate
Transformers to using lazy properties. (#1036) - Migrate
ShadowJarto using lazy properties.isEnableRelocationis removed, useenableRelocationinstead. (#1044) - Resolve
Configurationdirectly inDependencyFilter. (#1045) - Some public getters are removed from
SimpleRelocator,includesandexcludesare exposed asSetPropertys. (#1079) - Migrate all
ListPropertyusages toSetProperty. Some publicListparameters are also changed toSet. (#1103) - Remove
JavaJarExec, now useJavaExecdirectly forrunShadowtask. (#1197) ServiceFileTransformer.ServiceStreamhas been removed. (#1218)- Mark
RelocatorRemapperasinternal. (#1227) - Remove
KnowsTaskas it's useless. (#1236) - Remove
TransformerContext.getEntryTimestamp. (#1245) - Move tracking unused classes logic out of
ShadowCopyAction. (#1257) - Remove
BaseStreamAction. (#1258) - Remove
ShadowStats. (#1264) - Move
DependencyFilterfromcom.github.jengelman.gradle.plugins.shadow.internalintocom.github.jengelman.gradle.plugins.shadow.tasks. (#1272) - Rename
TransformertoResourceTransformer. Aims to better align with the name oforg.apache.maven.plugins.shade.resource.ResourceTransformer.javaand to distinguish itself fromorg.gradle.api.Transformer.java. (#1288) - Mark
DefaultInheritManifestasinternal. (#1303) - Polish
ShadowSpec. Return values ofShadowSpecfunctions are changed toUnitto avoid confusion.ShadowSpecno longer extendsCopySpec. Overloadrelocate,transformand things for better usability in Kotlin. (#1307) - Remove redundant types from function returning. (#1308)
- Reduce dependency and project overloads in
DependencyFilter. (#1328) - Align the behavior of
ShadowTask.fromwith Gradle'sAbstractCopyTask.from. In the previous versions,ShadowTask.fromwould always unzip the files before processing them, which caused serial issues that are hard to fix. Now it behaves like Gradle'sAbstractCopyTask.from, which means it will not unzip the files, only copy the files as-is. (#1233) - Remove
ShadowCopyAction.ArchiveFileTreeElementandRelativeArchivePath. (#1233)
Added
- Add .md support to the Apache License and Notice transformers. (#1041)
- Sync
SimpleRelocatorchanges from maven-shade-plugin. (#1076) - Exclude
module-info.classin Multi-Release folders by default. (#1177) - Inject
TargetJvmVersionattribute for Gradle Module Metadata. (#1199) - Support Java 24. (#1222)
- Sync
ShadowApplicationPluginwithApplicationPlugin. (#1224) - Inject
Multi-Releasemanifest attribute if any dependency contains it. (#1239) - Mark
Transformeras throwingIOException. (#1248) - Compat Kotlin Multiplatform plugin. You still need to manually configure
manifest.attributes(e.g.Main-Classattr) in theshadowJartask if necessary. (#1280) - Add Kotlin DSL examples in docs. (#1306)
- Support using type-safe dependency accessors in
ShadowJar.dependencies. (#1322) - Set
Main-Classattr for KMP 2.1.0 or above. (#1337) - Support command line options for
ShadowJar. (#1365)
Changed
- Exclude kotlin-stdlib from plugin dependencies. (#1093)
- Replace deprecated
SelfResolvingDependencywithFileCollectionDependency. (#1114) - Support configuring
separatorinAppendingTransformer. This is useful for handling files likeresources/application.yml. (#1169) - Update start script templates. (#1183) (#1419)
- Mark
ShadowJar.dependencyFilteras@Input.ShadowSpec.statsis removed andShadowJar.statsisinternalfor now. (#1206) - Mark more
Transformers cacheable. (#1210) - Polish
startShadowScriptstask registering. (#1216) - Bump min Java requirement to 11. (#1242)
- Reduce duplicated
SimpleRelocatorto improve performance. (#1271) - Migrate doc sites to MkDocs. (#1302)
runShadowno longer depends oninstallShadowDist. (#1353)- Move the group of
ShadowJarfromshadowtobuild. (#1355) - Set
Main-Classattr for KMP 1.9.0 or above. (#1410) - In-development snapshots are now published to the Central Portal Snapshots repository at https://central.sonatype.com/repository/maven-snapshots/. (#1414)
- Update ASM to 9.8 to support Java 25. (#1380)
- Refactor file visiting logic in
StreamAction, handle file unzipping viaProject.zipTree. (#1233) - Don't re-add suppressed Gradle API to
compileOnlyconfiguration. (#1422) - Bump the min Gradle requirement to 8.11. (#1479)
- Expose Ant as
compilescope. (#1488)
Fixed
- Fix single Log4j2Plugins.dat isn't included into fat jar. (#1039)
- Adjust property initializations and modifiers in
ShadowJar. This fixes the regression for registering customShadowJartasks. (#1090) - Fail builds if processing bad jars. (#1146)
- Fix
Log4j2PluginsCacheFileTransformernot working for mergingLog4j2Plugins.datfiles. (#1175) - Support overriding
mainClassprovided byJavaApplication. (#1182) - Fix
ShadowJarnot being successful afterincludesorexcludesare changed. (#1200) - Fix the last modified time of shadowed directories. (#1277)
- Fix relocation exclusion for file patterns like
kotlin/kotlin.kotlin_builtins. (#1313) - Avoid creating jvm targets eagerly for KMP. (#1378)
- Allow using file trees of JARs together with the configuration cache. (#1441)
- Fallback
RelocateClassContextandRelocatePathContextto data classes. (#1445) - Pin the plugin's Kotlin language level on 2.0. The language level used in
9.0.0-beta14is 2.2, which may cause compatibility issues for the plugins depending on Shadow. (#1448) - Fix compatibility for Gradle 9.0.0 RC1. (#1468)
- Honor
DuplicatesStrategy. Shadow recognizedDuplicatesStrategy.EXCLUDEas the default, but the other strategies didn't work properly. Now we honorDuplicatesStrategy.INCLUDEas the default, and align all the strategy behaviors with the Gradle side. (#1233) - Honor unzipped jars via
from. (#1233)
9.0.0-beta17 - 2025-06-18
Fixed
- Fix compatibility for Gradle 9.0.0 RC1. (#1468)
9.0.0-beta16 - 2025-06-14
Changed
- Update ASM to 9.8 to support Java 25. (#1380)
Fixed
- Restore removed
NamedfromResourceTransformer. (#1449)
9.0.0-beta15 - 2025-05-28
Fixed
- Pin the plugin's Kotlin language level on 2.0. (#1448)
The language level used in9.0.0-beta14is 2.2, which may cause compatibility issues for the plugins depending on Shadow.
9.0.0-beta14 - 2025-05-28
Changed
- Update start script templates. (#1419)
- In-development snapshots are now published to the Central Portal Snapshots repository at https://central.sonatype.com/repository/maven-snapshots/. (#1414)
Fixed
- Allow using file trees of JARs together with the configuration cache. (#1441)
- Fallback
RelocateClassContextandRelocatePathContextto data classes. (#1445)
9.0.0-beta13 - 2025-04-29
Changed
- Set
Main-Classattr for KMP 1.9.0 or above. (#1410)
Fixed
- Avoid creating jvm targets eagerly for KMP. (#1378)
9.0.0-beta12 - 2025-04-01
Added
- Support command line options for
ShadowJar. (#1365)
Options:
--enable-relocation Enable relocation of packages in the jar
--no-enable-relocation Disables option --enable-relocation
--minimize-jar Minimize the jar by removing unused classes
--no-minimize-jar Disables option --minimize-jar
--relocation-prefix Prefix to use for relocated packages
--rerun Causes the task to be re-run even if up-to-date
Changed
- Move the group of
ShadowJarfromshadowtobuild. (#1355)
9.0.0-beta11 - 2025-03-18
Added
- Add Kotlin DSL examples in docs. (#1306)
- Support using type-safe dependency accessors in
ShadowJar.dependencies. (#1322) - Set
Main-Classattr for KMP 2.1.0 or above. (#1337)
Changed
- BREAKING CHANGE: Polish
ShadowSpec. (#1307)- Return values of
ShadowSpecfunctions are changed toUnitto avoid confusion. ShadowSpecno longer extendsCopySpec.- Overload
relocate,transformand things for better usability in Kotlin.
- Return values of
- BREAKING CHANGE: Remove redundant types from function returning. (#1308)
runShadowno longer depends oninstallShadowDist. (#1353)
Fixed
- Fix relocation exclusion for file patterns like
kotlin/kotlin.kotlin_builtins. (#1313)
Removed
- BREAKING CHANGE: Reduce dependency and project overloads in
DependencyFilter. (#1328)
9.0.0-beta10 - 2025-03-05
Added
- Compat Kotlin Multiplatform plugin. (#1280)
You still need to manually configuremanifest.attributes(e.g.Main-Classattr) in theshadowJartask if necessary.
Changed
- BREAKING CHANGE: Rename
TransformertoResourceTransformer. (#1288)
Aims to better align with the name of org.apache.maven.plugins.shade.resource.ResourceTransformer.java and to distinguish itself from org.gradle.api.Transformer.java. - BREAKING CHANGE: Mark
DefaultInheritManifestasinternal. (#1303) - Migrate doc sites to MkDocs. (#1302)
Fixed
- Fix the last modified time of shadowed directories. (#1277)
Removed
- BREAKING CHANGE: Remove
Namedfrom the parents ofTransformer. (#1289)
9.0.0-beta9 - 2025-02-24
Added
- Mark
Transformeras throwingIOException. (#1248)
Changed
- BREAKING CHANGE: Move tracking unused classes logic out of
ShadowCopyAction. (#1257) - Reduce duplicated
SimpleRelocatorto improve performance. (#1271) - BREAKING CHANGE: Move
DependencyFilterfromcom.github.jengelman.gradle.plugins.shadow.internalintocom.github.jengelman.gradle.plugins.shadow.tasks. (#1272) - BREAKING CHANGE: Align the behavior of
ShadowTask.fromwith Gradle'sAbstractCopyTask.from. (#1233)
In the previous versions,ShadowTask.fromwould always unzip the files before processing them, which caused serial issues that are hard to fix. Now it behaves like Gradle'sAbstractCopyTask.from, which means it will not unzip the files, only copy the files as-is. If you still want to shadow the unzipped files, try out something like:ortasks.shadowJar { from(zipTree(files('path/to/your/file.zip'))) }dependencies { implementation(files('path/to/your/file.zip')) } - Refactor file visiting logic in
StreamAction, handle file unzipping viaProject.zipTree. (#1233)
Fixed
- Honor
DuplicatesStrategy. (#1233)
Shadow recognizedDuplicatesStrategy.EXCLUDEas the default, but the other strategies didn't work properly. Now we honorDuplicatesStrategy.INCLUDEas the default, and align all the strategy behaviors with the Gradle side. - Honor unzipped jars via
from. (#1233)
Removed
- BREAKING CHANGE: Remove
BaseStreamAction. (#1258) - BREAKING CHANGE: Remove
ShadowStats. (#1264) - BREAKING CHANGE: Remove
ShadowCopyAction.ArchiveFileTreeElementandRelativeArchivePath. (#1233) - BREAKING CHANGE: Remove
TransformerContext.getEntryTimestamp. (#1245)
9.0.0-beta8 - 2025-02-08
Added
- Sync
ShadowApplicationPluginwithApplicationPlugin. (#1224) - Inject
Multi-Releasemanifest attribute if any dependency contains it. (#1239)
Changed
- BREAKING CHANGE: Mark
RelocatorRemapperasinternal. (#1227) - Bump min Java requirement to 11. (#1242)
Removed
- BREAKING CHANGE:
ServiceFileTransformer.ServiceStreamhas been removed. (#1218) - BREAKING CHANGE: Remove
KnowsTaskas it's useless. (#1236)
9.0.0-beta7 - 2025-02-02
Added
Changed
- Update start script templates. (#1183)
- Mark more
Transformers cacheable. (#1210) - Mark
ShadowJar.dependencyFilteras@Input. (#1206)
ShadowSpec.statsis removed andShadowJar.statsisinternalfor now. - Polish
startShadowScriptstask registering. (#1216)
Fixed
- Support overriding
mainClassprovided byJavaApplication. (#1182) - Fix
ShadowJarnot being successful afterincludesorexcludesare changed. (#1200)
Removed
- BREAKING CHANGE: Remove
JavaJarExec, now useJavaExecdirectly forrunShadowtask. (#1197)
9.0.0-beta6 - 2025-01-23
Added
- Exclude
module-info.classin Multi-Release folders by default. (#1177)
Fixed
- Fix
Log4j2PluginsCacheFileTransformernot working for mergingLog4j2Plugins.datfiles. (#1175)
9.0.0-beta5 - 2025-01-21
Added
- Sync
SimpleRelocatorchanges from maven-shade-plugin. (#1076)
Changed
- Exclude kotlin-stdlib from plugin dependencies. (#1093)
- BREAKING CHANGE: Migrate all
ListPropertyusages toSetProperty. (#1103)
Some publicListparameters are also changed toSet. - Replace deprecated
SelfResolvingDependencywithFileCollectionDependency. (#1114) - Support configuring
separatorinAppendingTransformer. (#1169)
This is useful for handling files likeresources/application.yml.
Fixed
- Fail builds if processing bad jars. (#1146)
9.0.0-beta4 - 2024-12-06
Changed
- BREAKING CHANGE: Some public getters are removed from
SimpleRelocator,includesandexcludesare exposed asSetPropertys. (#1079)
Fixed
- Adjust property initializations and modifiers in
ShadowJar. (#1090)
This fixes the regression for registering customShadowJartasks.
9.0.0-beta2 - 2024-11-28
Fixed
- Revert "Migrate SimpleRelocator to using lazy properties" (#1052)
This fixes the relocation not working inv9.0.0-beta1.
9.0.0-beta1 - 2024-11-27
Added
- Add .md support to the Apache License and Notice transformers. (#1041)
Changed
- BREAKING CHANGE: Rewrite this plugin in Kotlin. (#1012)
- BREAKING CHANGE: Migrate
Transformers to using lazy properties. (#1036) - BREAKING CHANGE: Migrate
ShadowJarto using lazy properties. (#1044)isEnableRelocationis removed, useenableRelocationinstead. - BREAKING CHANGE: Resolve
Configurationdirectly inDependencyFilter. (#1045) - BREAKING CHANGE: Migrate
SimpleRelocatorto using lazy properties. (#1047)
Removed
- BREAKING CHANGE: Remove Develocity integration. (#1014)
Fixed
- Fix single Log4j2Plugins.dat isn't included into fat jar. (#1039)
8.3.8 - 2025-07-01
Fixed
- Fix the regression of
PropertiesFileTransformerin8.3.7. (#1493)
Changed
- Expose Ant as
compilescope. (#1488)
8.3.7 - 2025-06-24
Fixed
- Fix compatibility for Gradle 9.0.0 RC1. (#1470)
8.3.6 - 2025-02-02
Added
- Support Java 24. (#1222)
8.3.5 - 2024-11-03
Fixed
- Revert "Bump Java level to 11" (#1011).
This reverts the change to maintain compatibility with 8.x versions. The Java level will be bumped to 11 or above in the next major release.
8.3.4 - 2024-10-29
Fixed
8.3.3 - 2024-10-02
Changed
- Disable Develocity integration by default. (#993)
8.3.2 - 2024-09-18
Added
- Support Java 23. (#974)
Changed
ShadowExtension.componenthas been deprecated, now you can usecomponent.shadowinstead. (#956)- BREAKING CHANGE: update to jdependency 2.11, this requires Java 11 or above to run. (#974)
Fixed
- Stop publishing Shadow self fat jar to Maven repository. (#967)
8.3.1 - 2024-09-10
Added
- Apply an empty plugin that has the legacy
com.github.johnrengelman.shadowplugin ID. This allows existing build logic to keep on reacting to the legacy plugin as the replacement is drop-in currently.
Fixed
- Explicitly add classifier to maven publication. (#904)
- Refix excluding Gradle APIs for java-gradle-plugin. (#948)
8.3.0 - 2024-08-08
Changed
- BREAKING CHANGE: the GitHub has been transferred from
johnrengelman/shadowtoGradleUp/shadow, you can view more details in GradleUp/shadow/issues/908.
We also update the plugin ID fromcom.github.johnrengelman.shadowtocom.gradleup.shadow, and the Maven coordinate fromcom.github.johnrengelman:shadowtocom.gradleup.shadow:shadow-gradle-plugin. - Bump the min Gradle requirement from
8.0.0to8.3. (#876) - Support Java 21. (#876)
- Use new file permission API from Gradle 8.3. (#876)
Fixed
- Fix for PropertiesFileTransformer breaks Reproducible builds in
8.1.1. (#858)
8.1.1 - 2023-03-20
NOTE: As of this version, the GitHub repository has migrated to the main branch as the default branch for
releases.
- Replace deprecated ConfigureUtil by @Goooler in #826
- Polish outdated configs by @Goooler in #831
- Update plugin com.gradle.enterprise to v3.12.5 by @renovate in #838
- Update dependency gradle to v8.0.2 by @renovate in #844
- fix(deps): update dependency org.codehaus.plexus:plexus-utils to v3.5.1 by @renovate in #837
- chore(deps): update dependency prismjs to v1.27.0 [security] by @renovate in #828
- Encode transformed properties files with specified Charset by @scottsteen in #819
- chore(deps): update dependency vuepress to v1.9.9 by @renovate in #842
- @renovate made their first contribution in #838
- @scottsteen made their first contribution in #819
Full Changelog: 8.1.0...8.1.1
8.1.0 - 2023-02-26
BREAKING CHANGE: Due to adoption of the latest version of the com.gradle.plugin-publish plugin, the maven GAV
coordinates have changed as of this version.
The correct coordinates now align with the plugin ID itself:
group=com.github.johnrengelman, artifact=shadow, version=<version>.
For example, classpath("com.github.johnrengelman:shadow:8.1.0") is the correct configuration for this version.
BREAKING CHANGE: The ConfigureShadowRelocation task was removed as of this version to better support Gradle
configuration caching.
Instead, use the enableRelocation = true and relocationPrefix = "<new package>" settings on the ShadowJar task
type.
- Minor cleanups by @Goooler in #823
- Support config cache by @Goooler in #824
- Fix RelocatorRemapper: do not map inner class name if not changed by @Him188 in #793
Full Changelog: 8.0.0...8.1.0
8.0.0 - 2023-02-24
- Fix the plugin dependency identifier in the docs by @lnhrdt in #754
- mergeGroovyExtensionModules() not working with Groovy 2.5+ by @paulk-asert in #779
- Upgrade to ASM 9.3 to support JDK 19. by @vyazelenko in #770
- Do not add a dependencies block if it's already there by @desiderantes in #769
- Update README with new badge and links by @ThexXTURBOXx in #743
- Fix value not set when rawString is true. by @qian0817 in #765
- Mark the Log4j2PluginsCacheFileTransformer as cacheable. by @staktrace in #724
- Fix retrieval of dependencies node when publishing by @netomi in #798
- Upgrade dependency ASM from
9.3to9.4by @codecholeric in #817 - Fix a typo of code comment in the minimizing page by @jebnix in #800
- Prefer using plugin extensions over deprecated conventions by @eskatos in #821
- Introduce CleanProperties by @simPod in #622
- Support Gradle 8.0 by @Goooler in #822
- Updated dependencies, Gradle versions and Fix Test by @ElisaMin in #791
- @lnhrdt made their first contribution in #754
- @paulk-asert made their first contribution in #779
- @desiderantes made their first contribution in #769
- @ThexXTURBOXx made their first contribution in #743
- @qian0817 made their first contribution in #765
- @staktrace made their first contribution in #724
- @netomi made their first contribution in #798
- @codecholeric made their first contribution in #817
- @jebnix made their first contribution in #800
- @eskatos made their first contribution in #821
- @simPod made their first contribution in #622
- @Goooler made their first contribution in #822
- @ElisaMin made their first contribution in #791
Full Changelog: 7.1.2...8.0.0
7.1.2 - 2021-12-28
- Upgrade log4j to 2.17.1 due to CVE-2021-45105 and CVE-2021-44832
7.1.1 - 2021-12-14
- Upgrade log4j to 2.16.0 due to CVE-2021-44228 and CVE-2021-45046
7.1.0 - 2021-10-04
- BREAKING - The maven coordinates for the plugins have changed as of this version. The proper
group:artifactisgradle.plugin.com.github.johnrengelman:shadow - Jeff - Fix
shadowJarOut-Of-Date with configuration caching #708 - Fiouz - Better support for statically typed languages. This change may require code changes if you are utilizing the Groovy generated getters for properties in some Shadow transformers #706
- Helder Pereira - Various cleanups #672, #700, #701, #702
- Roberto Perez Alcolea - Support JVM Toolchains #691
- mjulianotq - Fix
Project.afterEvaluateconflicts #675 - Ilya Muradyan - Fix relocation for
ComponentsXmlResourceTransformer#678 - Vaidotas Valuckas - Fix
JavaExec.maindeprecation #686 - Dmitry Vyazelenko - Support Java 18 with ASM 9.2 #698
- Jason - Support Records with JDependency 2.7.0 #681
7.0.0 - 2021-04-26
-
Required Gradle 7.0+
-
Support for Java 16
-
Removes JCenter references
-
Breaking Change! - The maven group coordinate has changed to be
gradle.plugin.com.github.jengelman.gradle.plugins. Users explicitly declaring the buildscript classpath will need to update their configuration.buildscript { repositories { gradlePluginPortal() } dependencies { classpath "gradle.plugin.com.github.jengelman.gradle.plugins:shadow:7.0.0" } } apply plugin: "com.gradleup.shadow" -
Cédric Champeau - Support Gradle 7 #624
-
Daniel Oakey - Close
FileInputStreamwhen remapping close to avoid classloader locks #642 -
Maximilian Müller - Groovy error in
ServiceFileTransformerin Gradle 3 #655 -
Helder Pereira - Fix deprecations errors in transformers and add CI testing around future deprecations #647
-
Nicolas Humblot - Handle deprecation of
mainClassNameconfiguration #609, #612 -
Bernie Schelberg - Exclude
apiandimplementationsfrom legacymavenPOM #615
6.1.0 - 2020-10-05
- As of this version, Shadow is compiled with Java 8 source and target compatibility. This aligns the plugin with the minimum required Java version for Gradle 6.0 (https://docs.gradle.org/6.0/release-notes.html).
- Update ASM to 9.0 to support JDK 16.
- Tim Yates, Benedikt Ritter - Enable Configuration Caching for Gradle 6.6+ #591
- Caleb Larsen - doc updates #583
- Schalk W. Cronjé - log4j version update for CVE-2020-9488 #590
- Victor Tso - Input stream handling for large projects #587
- Matthew Haughton - Implement Task Configuration Avoidance pattern #597
6.0.0 - 2020-06-15
- Required Gradle 6.0+
- NEW: Support for Gradle Metadata publication via the
shadowRuntimeElementsconfiguration. This is a beta feature the hasn't been tested extensively. Feedback is appreciated. - Fix Gradle 7 deprecation warnings #530
- Fix to generated start script to correctly use
optsEnvironmentVar#518 - Yahor Berdnikau - Fix issues with Gradle API being embedded into published JAR #527
- Dmitry Vyazelenko - ASM updates to support latest Java versions #549
- ejjcase - Support exposing shadowed project dependencies via POM #543
- Artem Chubaryan - Performance optimizations #535
- Trask Stalnaker - Fix exclude patterns on Windows #539
- Artem Chubaryan - Allow usage of true regex patterns for include/exclude by the
%regex[<pattern>]syntax #536
5.2.0 - 2019-11-10
- Inez Korczyński - Performance optimization when evaluating relocation paths #507
- Jeff Adler - Fix remapping issues with multi release JARS #526
- Gary Hale - Implement support for Gradle build cache #524
- Roberto Perez Alcolea - Gradle 6.x support #517
- Konstantin Gribov - Return support for 5.0 for convention mapping #502
- Lai Jiang - Documentation updates on how to reconfigure
classifierandversion#512
5.1.0 - 2019-06-29
- Chris Rankin - Add
ManifestAppenderTransformerto support appending to Jar manifest #474 - Min-Ken Lai - Additional escaping fixes in start script #487
- Alan D. Cabrera - Automatically remove
gradleApifromcompilescope in the presence ofshadow#459 - Christian Stein - Do not initialize
UnusedTrackerwhen not requested #480, #479 - Attila Kelemen - Fix
NullPointerExceptionwhen using java minimization and api project dependency with version #477
5.0.0 - 2019-02-28
- Require Gradle 5.0+
- Fix issue with build classifier
-allbeing dropped in Gradle 5.1+ - Roberto Perez Alcolea - Exclude project dependencies from minimization #420
- Matt King, Richard Marbach - Fix escaping in start script #453, #455
- Dennis Schumann - Fix Gradle 5.2 incompatibility with
ShadowJar.getMetaClass()#456 - Brane F. Gračnar - Fix compatibility with
com.palantir.docker#460
4.0.4 - 2019-01-19
- When using
shadow,application, andmavenplugins together, removeshadowDistZipandshadowDistTarfromconfigurations.archivesso they are not published or installed by default with theuploadArchivesorinstalltasks. #347 - James Nelson - Fix
nullpath when using Jar minimization and Gradle'sapiconfiguration. #424, #425
4.0.3 - 2018-11-21
- Mark Vieira - Don't leak plugin classes to Gradle's Spec cache #430
4.0.2 - 2018-10-27
- Petar Petrov - Update to ASM 7.0-beta and jdependency 2.1.1 to support Java 11, #415
- Victor Tso - Ensure input streams are closed, #411
- Osip Fatkullin - Exclude
apiconfiguration from minimization, #405
4.0.1 - 2018-09-30
- Breaking Change!
Transform.modifyOutputStream(ZipOutputStream os)toTransform.modifyOutputStream(ZipOutputStream jos, boolean preserveFileTimestamps). Typically breaking changes are reserved for major version releases, but this change was necessary forpreserverFileTimestamps(introduced in v4.0.0) to work correctly in the presence of transformers, #404 - Fix regression in support Java 10+ during relocation, #403
4.0.0 - 2018-09-25
- Breaking Change! Restrict Plugin to Gradle 4.0+. Shadow major versions will align with Gradle major versions going forward.
- Breaking Change! For clarity purposes
com.github.johnrengelman.plugin-shadowhas been removed. If you intend to use this feature, you will need to declare your ownConfigureShadowRelocationtask. See section 2.9.2 of the User Guide - Sergey Tselovalnikov - Upgrade to ASM 6.2.1 to support Java 11
- Chris Cowan - Add support for
shadowJar.preserveFileTimestampsproperty. See Jar.preserveFileTimestamps - Paul N. Baker - Add
Log4j2PluginsCacheFileTransformerto process Log4j DAT files during merge. - Felipe Lima - Fix the long standing "No property
mainClassName" issue. - debanne - Implement JAR minimization actions. This will attempt to exclude unused classes in your shadowed JAR.
- Configure exclusion of
module-info.classfromshadowJarwhen using the Shadow the Java plugin, #352
2.0.4 - 2018-04-27
- Update to ASM 6.1.1 to address performance issues - ASM Issue 317816
- Close InputStreams after using them, #364
- Remove usage of Gradle internal
AbstractFileCollection. - Add task annotations to remove warnings when validating plugin.
2.0.3 - 2018-03-24
- Martin Sadowski - Update to ASM 6.1
- Scott Newson - Fix deprecated Gradle warnings, #356
2.0.2 - 2017-12-12
- Ben Adazza, Tyler Benson - documentation
- Marke Vieira - Support multi-project builds with Build-Scan integration
- Upgrade to ASM 6, [#294]#294, #303
- Rob Spieldenner - Fix integration with
applicationplugin in Gradle 4.3, #339 - Fixed deprecation warning from Gradle 4.2+, #326
2.0.1 - 2017-06-23
- Fix
null+configurationerror, #297
2.0.0 - 2017-05-09
- Breaking Change! Restrict Plugin to Gradle 3.0+
- Breaking Change! Build with Java 7
- Breaking Change! Updated
Transformerinterface to acceptTransformerContextobject instead of individual values - Breaking Change! Updated
Relocatorinterface to acceptRelocatePathContextandRelocateClassContextobjects - Breaking Change! Distribution tasks
distShadowZipanddistShadowTarhave been removed and replaced with the standardshadowDistZipandshadowDistTarfrom the Gradle Distribution plugin. - Breaking Change! The
installShadowApptask has been removed and replaced with the standardinstallShadowDisttask from the Gradle Distribution plugin. - Breaking Change! The new
installShadowDisttask outputs tobuild/install/<project name>-shadowper the standard (formerly wasbuild/installShadow) - Breaking Change!
component.shadowremoved in favor ofproject.shadow.component(publication)so as to remove dependency on internal Gradle APIs. - NEW Introducing
ConfigureShadowRelocationtask andcom.github.johnrengelman.plugin-shadowplugin to automatically configure package relocation for Gradle plugins. - NEW Integration with Gradle Build Scans. When running a
ShadowJartask with Build Scans, custom values including dependencies merged anc package relocations are published in the scan. - Build Shadow w/ Shadow. This will help prevent any future classpath conflicts with Gradle.
- Replace
startShadowScriptstasks with Gradle's built-inCreateStartScriptstype. - Build with Gradle 3.1
- Marc Philipp - Add
keyTransformerproperty toPropertiesFileTransformer - Update to ASM 5.2
- Piotr Kubowicz - Support
api,implementation,runtimeOnlydependency configurations introdcued in Gradle 3.3
1.2.4 - 2016-11-03
- Don't resolve dependency configurations during config phase, #128
- Build plugin with Gradle 2.14
- Fix docs regarding inheriting Jar manifest, #251
- Ethan Hall - Support projects that configure uploading to Ivy repositories, #256
- Force task to depend on dependency configuration, #152
- Do not explode ZIP files into shadow jar, #196
- John Szakmeister - Preserve timestamps on merged jar entries, #260
1.2.3 - 2016-01-25
- Support for Gradle 2.11-rc-1, #177
- Convert internal framework to Gradle TestKit
- Fedor Korotkov - Use BufferedOutputStream when writing the Zip file, #171
- Haw-Bin Chai - Quote Jar path in Windows start script as it may contain spaces, #170
- Serban Iordache - Evaluate relocation specs when merging service descriptors, #165
1.2.2 - 2015-07-17
1.2.1 - 2015-01-23
- Apply package relocations to dependency resources, #114
1.2.0 - 2014-11-24
- Re-organize some code to remove need for forcing the Gradle API ClassLoader to allow the
org.apache.tools.zippackage. - Upgrade JDOM library from 1.1 to 2.0.5 (change dependency from
jdom:jdom:1.1toorg.jdom:jdom2:2.0.5), #98 - Convert ShadowJar.groovy to ShadowJar.java to workaround binary incompatibility introduced by Gradle 2.2, #106
- Updated ASM library to
5.0.3to support JDK8, #97 - Allows for regex pattern matching in the
dependencystring when including/excluding, #83 - Apply package relocations to resource files, #93
1.1.2 - 2014-09-09
- fix bug in
runShadowwhere dependencies from theshadowconfiguration are not available, #94
1.1.1 - 2014-08-27
- Fix bug in
'createStartScripts'task that was causing it to not execute'shadowJar'task, #90 - Do not include
nullin ShadowJar Manifest'Class-Path'value whenjartask does not specify a value for it, #92 - ShadowJar Manifest
'Class-Path'should reference jars from'shadow'config as relative to location ofshadowJaroutput, #91
1.1.0 - 2014-08-26
- Breaking Change! Fix leaking of
shadowJar.manifestintojar.manifest, #82 To simplify behavior, theshadowJar.appendManifestmethod has been removed. Replace uses withshadowJar.manifest ShadowTasknow has aconfigurationsproperty that is resolved to the files in the resolved configuration before being added to the copy spec. This allows for an easier implementation for filtering. The default 'shadowJar' task has the convention of adding the'runtime'scope to this list. Manually created instances ofShadowTaskhave no configurations added by default and can be configured by settingtask.configurations.- Properly configure integration with the
'maven'plugin when added. When adding'maven'the'uploadShadow'task will now properly configure the POM dependencies by removing the'compile'and'runtime'configurations from the POM and adding the'shadow'configuration as aRUNTIMEscope in the POM. This behavior matches the behavior when using the'maven-publish'plugin. - Matt Hurne - Allow
ServiceFileTransformerto specify include/exclude patterns for files within the configured path to merge. - Matt Hurne - Added
GroovyExtensionModuleTransformerfor merging Groovy Extension module descriptor files. The existingServiceFileTransformernow excludes Groovy Extension Module descriptors by default. distShadowZipanddistShadowZipnow contain the shadow library and run scripts instead of the default from the'application'plugin, #89
1.0.3 - 2014-07-29
- Make service files root path configurable for
ServiceFileTransformer, #72 - [Andres Almiray](https://github.com/aalmiray - Added PropertiesFileTransformer, #73
- Brandon Kearby - Fixed StackOverflow when a cycle occurs in the resolved dependency grap, #69
- Apply Transformers to project resources, #70, #71
- Minecrell - Do not drop non-class files from dependencies when relocation is enabled, #61
- Remove support for applying individual sub-plugins by Id (easier maintenance and cleaner presentation in Gradle Portal)
1.0.2 - 2014-07-07
- Do not add an empty Class-Path attribute to the manifest when the
shadowconfiguration contains no dependencies. runShadownow registersshadowJaras an input. Previously,runShadowdid not executeshadowJarand an error occurred.- Support Gradle 2.0, #66
- Do not override existing 'Class-Path' Manifest attribute settings from Jar configuration. Instead combine, #65
1.0.1 - 2014-06-28
- Fix issue where non-class files are dropped when using relocation, #58
- Do not create a
/directory inside the output jar. - Fix
runShadowtask to evaluate theshadowJar.archiveFileproperty at execution time, #60
1.0.0 - 2014-06-27
- Previously known as v0.9.0
- All changes from 0.9.0-M1 to 0.9.0-M5
- Properly configure the ShadowJar task inputs to observe the include/excludes from the
dependenciesblock. This allows UP-TO-DATE checking to work properly when changing thedependenciesrulea, #54 - Apply relocation remappings to classes and imports in source project, #55
- Do not create directories in jar for source of remapped class, created directories in jar for destination of remapped classes, #53
0.9.0-M5 - 2014-06-26
- Add commons-io to compile classpath
- Update asm library to 4.1
0.9.0-M4 - 2014-06-21
- Break plugin into multiple sub-plugins.
ShadowBasePluginis always applied.ShadowJavaPluginandShadowApplicationPluginare applied in reaction to applying thejavaandapplicationplugins respectively. - Shadow does not applied
javaplugin automatically.javaorgroovymust be applied in conjunction withshadow. - Moved artifact filtering to
dependencies {}block underneathshadowJar. This allows better include/exclude control for dependencies. - Dependencies added to the
shadowconfiguration are automatically added to theClass-Pathattribute in the manifest forshadowJar - Applying
applicationplugin and settingsmainClassNameautomatically configures theMain-Classattribute in the manifest forshadowJar runShadownow utilizes the output of theshadowJarand executes usingjava -jar <shadow jar file>- Start Scripts for shadow distribution now utilize
java -jarto execute instead of placing all files on classpath and executing main class. - Excluding/Including dependencies no longer includes transitive dependencies. All dependencies for inclusion/exclusion must be explicitly configured via a spec.
0.9.0-M3 - 2014-06-14
- Use commons.io FilenameUtils to determine name of resolved jars for including/excluding
0.9.0-M2 - 2014-06-09
- Added integration with
applicationplugin to replace oldOutputSignedJarstask - Fixed bug that resulted in duplicate file entries in the resulting Jar
- Changed plugin id to 'com.github.johnrengelman.shadow' to support Gradle 2.x plugin infrastructure.
0.9.0-M1 - 2014-06-06
- Rewrite based on Gradle Jar Task
ShadowJarnow extendsJar- Removed
signedCompileandsignedRuntimeconfigurations in favor ofshadowconfiguration - Removed
OutputSignedJarstask