GradleUp

GradleUp/shadow

Kotlin Apache-2.0 Dev Tools

Gradle plugin to create fat/uber JARs, apply file transforms, and relocate packages for applications and libraries. Gradle version of Maven's Shade plugin.

4.2k stars
426 forks
active
GitHub +6 / week

4.2k

Stars

426

Forks

13

Open issues

30

Contributors

9.5.1 06 Jul 2026

AI Analysis

Shadow is a Gradle plugin for creating fat/uber JARs with package relocation support, providing the JVM build ecosystem with Maven Shade's capabilities. It serves teams building applications and libraries that need to bundle dependencies while avoiding classpath conflicts through package relocation. Best suited for Java/Kotlin/Scala developers who require sophisticated JAR packaging beyond standard Gradle; not needed for simple modular applications or those using containerization instead of m...

Dev Tools Developer Tool Discovery value: 3/10
Documentation 8/10
Activity 9/10
Community 8/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

gradle-plugin jar-packaging jvm-build-tool dependency-bundling package-relocation
Actively maintained Well documented Niche/specialized use case Production ready
Deep Analysis · Based on README and public signals
1w ago

Gradle fat JAR plugin with package relocation, now stewarded by GradleUp after 13-year legacy

Shadow is a Gradle plugin for creating uber/fat JARs—archives containing an application and all its dependencies—with optional package relocation to avoid conflicts. Originally maintained independently for over a decade, it was transferred to the GradleUp organization in 2024 to ensure continuity. It serves a permanent need in the JVM ecosystem: packaging self-contained applications. Adoption is widespread in enterprise Java and Kotlin projects; the old plugin ID (`com.github.johnrengelman.shadow`) remains heavily used despite the transition to `com.gradleup.shadow`.

Origin

Created in 2012 by John Rengelman, Shadow became the de facto Gradle equivalent of Maven's shade plugin. Maintenance was transferred to GradleUp in late 2024 (issue #908) to prevent abandonment as the original maintainer's availability declined. The project has been actively maintained under GradleUp since the handoff.

Growth

Growth has been steady rather than explosive. The 4,206 stars reflect stable adoption rather than viral growth—the project addresses a solved problem with no novel competitor in the Gradle ecosystem. Recent activity (last push 2026-07-01, within 24 hours of analysis date) and ongoing version releases (9.5.0+ targets Gradle 9.2+, Java 17+) show continued maintenance. The organizational transition likely arrested potential atrophy rather than catalyzed new growth.

In production

Adoption not formally quantified in README, but historical prevalence is high: the old plugin ID remains in widespread use across thousands of Java/Kotlin projects. Maven Central distribution and Gradle Plugin Portal presence enable easy adoption. The plugin ID transition (com.github.johnrengelman.shadow → com.gradleup.shadow) suggests a large installed base still using the old ID; recommended migration to new ID indicates active effort to consolidate users under new ownership.

Code analysis
Architecture

Based on README, Shadow applies transformations during JAR packaging: merging dependency classes, applying optional package relocation, and producing a single executable JAR. Likely implemented as a Gradle task that assembles resources and bytecode from transitive dependencies. Written in Kotlin, indicating modern Gradle development practices.

Tests

Not documented in README. CI badge present (GitHub Actions workflow shown as passing) but no mention of test suite size or coverage metrics.

Maintenance

Last push 2026-07-01 (within hours of analysis date 2026-07-02), indicating very recent activity. Compatibility matrix in README is current—latest version 9.5.0+ targets Gradle 9.2 and Java 17, suggesting tracking of modern Gradle/JDK releases. Published on Maven Central and Gradle Plugin Portal. Organizational stewardship by GradleUp (a company backing Gradle ecosystem tooling) reduces risk of abandonment.

Honest verdict

ADOPT IF: You use Gradle and need to package a self-contained application with dependencies (microservices, CLIs, batch jobs); package relocation is required to avoid classpath conflicts. The plugin is actively maintained, stable, and solves a necessary problem with no better Gradle alternative. AVOID IF: You are starting a new project and can structure dependencies to avoid conflicts—fat JARs are heavier and slower to load than modular deployments. You use Maven (use Shade instead) or need to deploy to a containerized environment where layered packaging is preferable. MONITOR IF: You are still on the old plugin ID (com.github.johnrengelman.shadow)—migration to com.gradleup.shadow is recommended to stay current, but old ID remains functional for now.

Independent dimensions

Mainstream potential

6/10

Technical importance

7/10

Adoption evidence

7/10

Risks
  • Reliance on organizational stewardship: GradleUp maintains Shadow as part of its ecosystem strategy; if priorities shift, active development could slow (though Apache license and public repo reduce lock-in risk).
  • JVM version floor is rising: version 9.5.0+ requires Java 17, excluding legacy environments; older Shadow versions still available but may lack recent bug fixes.
  • Package relocation complexity: README does not discuss edge cases (reflection, hardcoded class names, bytecode manipulation); practical limits of relocation are not transparent.
  • Maven Central distribution required: fat JAR publishing can be problematic in some enterprise environments; no mention of how Shadow handles build reproducibility or size optimization.
  • Ecosystem coupling: Heavy dependence on Gradle versioning (compatibility matrix shows tight coupling); Gradle major version upgrades may require plugin updates.
Prediction

Shadow will remain a stable, essential tool for Gradle-based JVM packaging. No displacement expected; the niche (Gradle fat JAR building) is permanent and the plugin is mature. Growth will be modest and maintenance-driven rather than feature-driven. Organizational backing by GradleUp ensures continuity over the next 3–5 years.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Kotlin
100%

Information

Language
Kotlin
License
Apache-2.0
Last updated
1d ago
Created
165mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

Tencent

Tencent/Shadow

Shadow is Tencent's open-source Android plugin framework that enables dynamic...

7.8k Java Mobile
javapackager

javapackager/JavaPackager

JavaPackager is a Maven/Gradle plugin that packages Java applications into...

1.2k Java Dev Tools
JetBrains

JetBrains/intellij-platform-gradle-plugin

This is a Gradle plugin maintained by JetBrains that streamlines building,...

1.5k Kotlin Dev Tools
autonomousapps

autonomousapps/dependency-analysis-gradle-plugin

A Gradle plugin that analyzes dependency declarations in JVM and Android...

2.2k Kotlin Dev Tools
gradle

gradle/gradle

Gradle is a widely-used build automation tool that handles multi-language...

18.8k Groovy Dev Tools
vs. alternatives
Maven Shade Plugin

Maven's native fat JAR tool. Shadow is the Gradle equivalent and addresses the same need; adoption is determined by build system choice, not competition.

Gradle's built-in fat JAR task

Gradle offers basic uber JAR assembly natively; Shadow adds package relocation (conflict avoidance) and more sophisticated merging—a substantial feature difference, not direct replacement.

Tencent/Shadow (7,775 stars)

Unrelated project: Android plugin for dynamic class loading and hot fixes, not a fat JAR tool. High star count reflects different problem domain.

autonomousapps/dependency-analysis-gradle-plugin

Analyzes dependencies for correctness; complementary to Shadow rather than competitive. Solves different problem (dependency hygiene vs. packaging).

JetBrains IntelliJ Platform Gradle Plugin

Specialized for IntelliJ plugin development; orthogonal use case. Not a general-purpose fat JAR tool.