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