New
Unclaimed project
Are you a maintainer of shadow? Claim this project to take control of your public changelog and roadmap.
Changelog
Gradle plugin to create fat/uber JARs, apply file transforms, and relocate packages for applications and libraries. Gradle version of Maven's Shade plugin.
tasks.shadowJar {
// This property will be used as a fallback if there is no explicit `Main-Class` attribute set.
mainClass = "my.Main"
}
executableDir and applicationName in application extension. (#1740)ShadowApplicationPlugin.Companion. (#1771)KotlinModuleMetadata but KmModule.optionalAnnotationClasses due to very limited usage of it. See more discussion here.BUNDLING_ATTRIBUTE in GMM. (#1773)org.gradle.dependency.bundling in shadowed JAR's Gradle Module Metadata is set to shadowed by default. You can override it for now by:
shadow {
bundlingAttribute = Bundling.EMBEDDED
}
META-INF path. (#1706)org.codehaus.groovy.runtime.ExtensionModule files) defined under META-INF/services/
and META-INF/groovy will be merged into META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule.Class-Path manifest attr logic from doFirst into copy. (#1720)Main-Class manifest attr logic from doFirst into copy. (#1724)InheritManifest and inheritFrom. (#1722)
tasks.shadowJar {
// Before (deprecated):
manifest.inheritFrom(tasks.jar.get().manifest)
// After (recommended):
manifest.from(tasks.jar.get().manifest)
// Note: You don't need to inherit the manifest from `jar` task as it's done by default for the `shadowJar` task.
// But if you want to inherit the manifest for your custom `ShadowJar` task, you still need to do it explicitly.
}
JavaExec error message when main class is not set. (#1725)RelocatorRemapper class pattern to cover more Java method descriptors. (#1731)+. (#1597)