Skip to content

Latest commit

 

History

History
485 lines (336 loc) · 30.6 KB

README.md

File metadata and controls

485 lines (336 loc) · 30.6 KB

Change Log

Added

  • Sync SimpleRelocator changes from maven-shade-plugin. (#1076)

Changed

  • BREAKING CHANGE: Migrate all ListProperty usages to SetProperty. (#1103)
    Some public List parameters are also changed to Set.
  • Replace deprecated SelfResolvingDependency with FileCollectionDependency. (#1114)

v9.0.0-beta4 (2024-12-06)

Changed

  • BREAKING CHANGE: Some public getters are removed from SimpleRelocator, includes and excludes are exposed as SetPropertys. (#1079)

Fixed

  • Adjust property initializations and modifiers in ShadowJar. (#1090)
    This fixes the regression for registering custom ShadowJar tasks.

v9.0.0-beta2 (2024-11-28)

Fixed

  • Revert "Migrate SimpleRelocator to using lazy properties" (#1052)
    This fixes the relocation not working in v9.0.0-beta1.

v9.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 ShadowJar to using lazy properties. (#1044) isEnableRelocation is removed, use enableRelocation instead.
  • BREAKING CHANGE: Resolve Configuration directly in DependencyFilter. (#1045)
  • BREAKING CHANGE: Migrate SimpleRelocator to using lazy properties. (#1047)

Removed

  • BREAKING CHANGE: Remove Develocity integration. (#1014)

Fixed

  • Fix single Log4j2Plugins.dat isn't included into fat jar. (#1039)

v8.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.

v8.3.4 (2024-10-29)

Fixed

  • Apply legacy plugin last, and declare capabilities for old plugins, fixes #964. (#991)

v8.3.3 (2024-10-02)

Changed

  • Disable Develocity integration by default. (#993)

v8.3.2 (2024-09-18)

Added

  • Support Java 23. (#974)

Changed

  • ShadowExtension.component has been deprecated, now you can use component.shadow instead. (#956)
  • BREAKING CHANGE: update to jdependency 2.11.0, this requires Java 11 or above to run. (#974)

Fixed

  • Stop publishing Shadow self fat jar to Maven repository. (#967)

v8.3.1 (2024-09-10)

Added

  • Apply an empty plugin that has the legacy com.github.johnrengelman.shadow plugin 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)

v8.3.0 (2024-08-08)

Changed

  • BREAKING CHANGE: the GitHub has been transferred from johnrengelman/shadow to GradleUp/shadow, you can view more details in GradleUp/shadow/issues/908.
    We also update the plugin ID from com.github.johnrengelman.shadow to com.gradleup.shadow, and the Maven coordinate from com.github.johnrengelman:shadow to com.gradleup.shadow:shadow-gradle-plugin.
  • Bump the min Gradle requirement from 8.0.0 to 8.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)

v8.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.

Release Notes

v8.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.

Release Notes

v8.0.0 (2023-02-24)

Release Notes

v7.1.3 (unreleased)

  • The GroovyExtensionModuleTransformer now also works for Groovy 2.5+.

v7.1.2 (2021-12-28)

  • Upgrade log4j to 2.17.1 due to CVE-2021-45105 and CVE-2021-44832

v7.1.1 (2021-12-14)

  • Upgrade log4j to 2.16.0 due to CVE-2021-44228 and CVE-2021-45046

v7.1.0 (2021-10-04)

  • BREAKING - The maven coordinates for the plugins have changed as of this version. The proper group:artifact is gradle.plugin.com.github.johnrengelman:shadow
  • Jeff - Fix shadowJar Out-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.afterEvaluate conflicts #675
  • Ilya Muradyan - Fix relocation for ComponentsXmlResourceTransformer #678
  • Vaidotas Valuckas - Fix JavaExec.main deprecation #686
  • Dmitry Vyazelenko - Support Java 18 with ASM 9.2 #698
  • Jason - Support Records with JDependency 2.7.0 #681

v7.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 {
        maven {
          url "https://plugins.gradle.org/m2/"
        }
      }
      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 FileInputStream when remapping close to avoid classloader locks #642

  • Maximilian Müller - Groovy error in ServiceFileTransformer in Gradle 3 #655

  • Helder Pereira - Fix deprecations errors in transformers and add CI testing around future deprecations #647

  • Nicolas Humblot - Handle deprecation of mainClassName configuration #609, #612

  • Bernie Schelberg - Exclude api and implementations from legacy maven POM #615

v6.1.0 (2020-10-05)

v6.0.0 (2020-06-15)

  • Required Gradle 6.0+
  • NEW: Support for Gradle Metadata publication via the shadowRuntimeElements configuration. 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

v5.2.0 (2019-11-10)

v5.1.0 (2019-06-29)

v5.0.0 (2019-02-28)

v4.0.4 (2019-01-19)

  • When using shadow, application, and maven plugins together, remove shadowDistZip and shadowDistTar from configurations.archives so they are not published or installed by default with the uploadArchives or install tasks. #347
  • James Nelson - Fix null path when using Jar minimization and Gradle's api configuration. #424, #425

v4.0.3 (2018-11-21)

v4.0.2 (2018-10-27)

v4.0.1 (2018-09-30)

  • Breaking Change! Transform.modifyOutputStream(ZipOutputStream os) to Transform.modifyOutputStream(ZipOutputStream jos, boolean preserveFileTimestamps). Typically breaking changes are reserved for major version releases, but this change was necessary for preserverFileTimestamps (introduced in v4.0.0) to work correctly in the presence of transformers, #404
  • Fix regression in support Java 10+ during relocation, #403

v4.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-shadow has been removed. If you intend to use this feature, you will need to declare your own ConfigureShadowRelocation task. 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.preserveFileTimestamps property. See Jar.preserveFileTimestamps
  • Paul N. Baker - Add Log4j2PluginsCacheFileTransformer to 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.class from shadowJar when using the Shadow the Java plugin, #352

v2.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.

v2.0.3 (2018-03-24)

v2.0.2 (2017-12-12)

v2.0.1 (2017-06-23)

  • Fix null+configuration error, #297

v2.0.0 (2017-05-09)

  • Breaking Change! Restrict Plugin to Gradle 3.0+
  • Breaking Change! Build with Java 7
  • Breaking Change! Updated Transformer interface to accept TransformerContext object instead of individual values
  • Breaking Change! Updated Relocator interface to accept RelocatePathContext and RelocateClassContext objects
  • Breaking Change! Distribution tasks distShadowZip and distShadowTar have been removed and replaced with the standard shadowDistZip and shadowDistTar from the Gradle Distribution plugin.
  • Breaking Change! The installShadowApp task has been removed and replaced with the standard installShadowDist task from the Gradle Distribution plugin.
  • Breaking Change! The new installShadowDist task outputs to build/install/<project name>-shadow per the standard (formerly was build/installShadow)
  • Breaking Change! component.shadow removed in favor of project.shadow.component(publication) so as to remove dependency on internal Gradle APIs.
  • NEW Introducing ConfigureShadowRelocation task and com.github.johnrengelman.plugin-shadow plugin to automatically configure package relocation for Gradle plugins.
  • NEW Integration with Gradle Build Scans. When running a ShadowJar task 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 startShadowScripts tasks with Gradle's built-in CreateStartScripts type.
  • Build with Gradle 3.1
  • Marc Philipp - Add keyTransformer property to PropertiesFileTransformer
  • Update to ASM 5.2
  • Piotr Kubowicz - Support api, implementation, runtimeOnly dependency configurations introdcued in Gradle 3.3

v1.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

v1.2.3 (2016-01-25)

v1.2.2 (2015-07-17)

v1.2.1 (2015-01-23)

  • Apply package relocations to dependency resources, #114

v1.2.0 (2014-11-24)

  • Re-organize some code to remove need for forcing the Gradle API ClassLoader to allow the org.apache.tools.zip package.
  • Upgrade JDOM library from 1.1 to 2.0.5 (change dependency from jdom:jdom:1.1 to org.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.3 to support JDK8, #97
  • Allows for regex pattern matching in the dependency string when including/excluding, #83
  • Apply package relocations to resource files, #93

v1.1.2 (2014-09-09)

  • fix bug in runShadow where dependencies from the shadow configuration are not available, #94

v1.1.1 (2014-08-27)

  • Fix bug in 'createStartScripts' task that was causing it to not execute 'shadowJar' task, #90
  • Do not include null in ShadowJar Manifest 'Class-Path' value when jar task does not specify a value for it, #92
  • ShadowJar Manifest 'Class-Path' should reference jars from 'shadow' config as relative to location of shadowJar output, #91

v1.1.0 (2014-08-26)

  • Breaking Change! Fix leaking of shadowJar.manifest into jar.manifest, #82 To simplify behavior, the shadowJar.appendManifest method has been removed. Replace uses with shadowJar.manifest
  • ShadowTask now has a configurations property 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 of ShadowTask have no configurations added by default and can be configured by setting task.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 a RUNTIME scope in the POM. This behavior matches the behavior when using the 'maven-publish' plugin.
  • Matt Hurne - Allow ServiceFileTransformer to specify include/exclude patterns for files within the configured path to merge.
  • Matt Hurne - Added GroovyExtensionModuleTransformer for merging Groovy Extension module descriptor files. The existing ServiceFileTransformer now excludes Groovy Extension Module descriptors by default.
  • distShadowZip and distShadowZip now contain the shadow library and run scripts instead of the default from the 'application' plugin, #89

v1.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)

v1.0.2 (2014-07-07)

  • Do not add an empty Class-Path attribute to the manifest when the shadow configuration contains no dependencies.
  • runShadow now registers shadowJar as an input. Previously, runShadow did not execute shadowJar and an error occurred.
  • Support Gradle 2.0, #66
  • Do not override existing 'Class-Path' Manifest attribute settings from Jar configuration. Instead combine, #65

v1.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 runShadow task to evaluate the shadowJar.archiveFile property at execution time, #60

v1.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 dependencies block. This allows UP-TO-DATE checking to work properly when changing the dependencies rulea, #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

v0.9.0-M5

  • Add commons-io to compile classpath
  • Update asm library to 4.1

v0.9.0-M4

  • Break plugin into multiple sub-plugins. ShadowBasePlugin is always applied. ShadowJavaPlugin and ShadowApplicationPlugin are applied in reaction to applying the java and application plugins respectively.
  • Shadow does not applied java plugin automatically. java or groovy must be applied in conjunction with shadow.
  • Moved artifact filtering to dependencies {} block underneath shadowJar. This allows better include/exclude control for dependencies.
  • Dependencies added to the shadow configuration are automatically added to the Class-Path attribute in the manifest for shadowJar
  • Applying application plugin and settings mainClassName automatically configures the Main-Class attribute in the manifest for shadowJar
  • runShadow now utilizes the output of the shadowJar and executes using java -jar <shadow jar file>
  • Start Scripts for shadow distribution now utilize java -jar to 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.

v0.9.0-M3

  • Use commons.io FilenameUtils to determine name of resolved jars for including/excluding

v0.9.0-M2

  • Added integration with application plugin to replace old OutputSignedJars task
  • 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.

v0.9.0-M1

  • Rewrite based on Gradle Jar Task
  • ShadowJar now extends Jar
  • Removed signedCompile and signedRuntime configurations in favor of shadow configuration
  • Removed OutputSignedJars task