The Kotlin programming language and its compiler, standard library, and build tooling, developed by JetBrains for multiplatform development.
GradleUp/shadow
A Gradle plugin that builds fat/uber JARs, relocates packages, transforms files, and can shrink output with R8/ProGuard.
- Stars
- 4,243
- Forks
- 427
- Open issues
- 11
- Last commit
- yesterday
What is it?
Shadow is a Gradle plugin for packaging a project and its dependencies into a single fat or uber JAR. It is the Gradle counterpart to the Maven Shade Plugin, and it covers the common needs of bundling libraries into one runnable artifact.
Beyond merging dependencies, the plugin can relocate (rename) packages to avoid classpath conflicts, transform or merge resource files during packaging, and optimize the output with R8 or ProGuard. It is published on the Gradle Plugin Portal and Maven Central under the plugin ID com.gradleup.shadow, and it supports Gradle 8.0 and later. The project was moved to the GradleUp organization from its original maintainer and uses the older plugin ID com.github.johnrengelman.shadow only in legacy builds.
Key features
- 01Builds fat/uber JARs that bundle project dependencies into one artifact.
- 02Relocates packages to avoid classpath conflicts between libraries.
- 03Transforms and merges resource files during packaging.
- 04Optimizes output with R8 or ProGuard.
- 05Available from the Gradle Plugin Portal and Maven Central.
Use cases
- Producing a single runnable JAR for a Java or Kotlin application with many dependencies.
- Shading a library under a private package name to avoid conflicts with other versions on the classpath.
- Shrinking a distributable JAR by removing unused code with R8 or ProGuard.
Quick start
- 1
Apply the plugin with ID com.gradleup.shadow in your Gradle build
- 2
Read the User Guide for configuration and usage
Things to know
- The latest releases require Java 17 or newer and Gradle 9.4 or newer.
Topics
FAQ
- What is shadow?
- A Gradle plugin that builds fat/uber JARs, relocates packages, transforms files, and can shrink output with R8/ProGuard. Shadow is a Gradle plugin for packaging a project and its dependencies into a single fat or uber JAR. It is the Gradle counterpart to the Maven Shade Plugin, and it covers the common needs of bundling libraries into one runnable artifact.
- Is shadow free to use? What license does it have?
- shadow is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is shadow still maintained?
- Actively maintained. The last commit to shadow was on Nov 6, 2026.
- What can I use shadow for?
- Producing a single runnable JAR for a Java or Kotlin application with many dependencies. Shading a library under a private package name to avoid conflicts with other versions on the classpath. Shrinking a distributable JAR by removing unused code with R8 or ProGuard.
- How do I install shadow?
- Apply the plugin with ID com.gradleup.shadow in your Gradle build Read the User Guide for configuration and usage
- Where can I get shadow?
- The source code and installation instructions are on GitHub: https://github.com/GradleUp/shadow
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Gradle plugin that publishes Java, Kotlin and Android libraries, with sources and javadoc, to Maven Central or other Nexus repositories.
A Gradle plugin that wraps ktlint to add check and auto-format tasks for Kotlin projects.
Gradle is a build automation tool for multi-project builds across Java, Kotlin, Scala, Android, Groovy, C++ and Swift.
Build optimized Docker and OCI container images for Java applications with Maven or Gradle, without a Docker daemon.
Lightweight, self-hosted Maven repository manager for JVM artifacts, positioned as a lighter alternative to Nexus, Archiva and Artifactory.