Back to browse
Jbundle – GitHub Action to build self-contained JVM binaries in CI

Jbundle – GitHub Action to build self-contained JVM binaries in CI

by avelino·Mar 14, 2026·1 point·0 comments

AI Analysis

●●SolidSolve My ProblemNiche Gem

JabRef uses this in production to ship 100k+ users a single binary without JDK installs.

Strengths
  • Detects Gradle/Maven automatically and reuses setup-java's JAVA_HOME to avoid double downloads.
  • JVM profiles (cli vs server) and uberjar shrinking reduce binary size meaningfully.
  • Cross-platform matrix builds work out of the box for linux-x64, macos-aarch64, macos-x64.
Weaknesses
  • jpackage and GraalVM already solve JVM bundling; this is a CI wrapper, not a technical breakthrough.
  • No Windows CI example in the quick start despite claiming cross-platform support.
Target Audience

Java developers distributing desktop CLI applications

Similar To

jpackage · GraalVM · jlink

Post Description

I built jbundle (Rust) to solve a real pain: distributing JVM apps as single binaries without asking users to install a JDK.

The GitHub Action wraps the whole thing into one step:

```yaml - uses: avelino/jbundle@main with: input: . output: ./dist/myapp ```

That's it. It detects your build system (Gradle/Maven), bundles the right JDK, and outputs a self-contained binary. JabRef (100k+ users) uses it in production.

What it supports: - Cross-platform matrix builds (linux-x64, macos-aarch64, macos-x64) - `jbundle.toml` for config-as-code - Reuses `JAVA_HOME` from `setup-java` — no double download - `--dry-run` and `--verbose` for debugging CI failures - JVM profiles (`cli` vs `server`) + uberjar shrinking

Docs: https://jbundle.avelino.run/user-guide/github-actions Repo: https://github.com/avelino/jbundle

Feedback welcome, especially from teams distributing Gradle multi-project apps

Similar Projects