JReleaser

JReleaser is a release automation tool. Its goal is to simplify creating releases and publishing artifacts to multiple package managers while providing customizable options. However, you may also use it with projects that do not require publishing binary assets. The tool can be used to create Git releases (tag, changelog, assets), announce releases, assemble additional binaries and files to be published via package managers. JReleaser supports any kind of project regardless of its source language (Java, Go, Node, Rust, Perl, Python, C/C++, C#, Elixir, Haskell, etc), although it provides additional benefits to Java based projects.

Examples of Java projects:

Examples of non-Java projects:

What it does

JReleaser takes inputs from well known build tools (Apache Ant, Apache Maven, Gradle, Cargo, NPM, Cabal, etc) such as JAR files, binary distributions (.zip, .tar), JLink images, or any other file that you’d like to publish as a Git release on popular Git services such as GitHub, GitLab, or Gitea. Distribution files may additionally be published to package managers such as Homebrew, Snapcraft, Scoop, or get ready to be launched via JBang. Releases may be announced to a variety of channels such as Twitter, Mastodon, Zulip, Sdkman, and others. Have a look at the listed integrations.

jreleaser tools

JReleaser provides explicit integration via plugins for ant Apache Ant, maven Apache Maven, and gradle Gradle build tools. Use the cli CLI for any other build tool (Java and non-Java alike).

How does it work

A release process can be customized with a jreleaser.[yml|toml|json] file if using the cli CLI or ant Apache Ant options, or direct DSL configuration inside a pom.xml (maven Apache Maven) or build.gradle (gradle Gradle) file.

Once setup, you can create a new release by invoking the full-release command or any other commands described in the Workflow.

Every step of the release process is configurable. Inputs may be parameterized externally. Several input files may be provided as templates.

Where does it run

You can run JReleaser at your local development machine or at any of the supported CI/CD services.

How it looks

A (moving) picture is worth a thousand words

Who is using it

A non-exhaustive list of projects that use JReleaser:

  • Open Source

  • Closed Source

ConnOR

A commandline tool for resetting Kafka Connect source connector offsets.

Decodable Pipeline SDK

An SDK for implementing Flink jobs based on Decodable

DiscoCLI

A command line interface for the foojay.io Disco API.

Griffon

Next generation desktop application development platform for the JVM.

Ikonli

Icon packs for Java applications.

JBang

Unleash the power of Java - JBang Lets Students, Educators and Professional Developers create, edit and run self-contained source-only Java programs with unprecedented ease.

JfrUnit

A JUnit extension for asserting JDK Flight Recorder events.

JFXCentral

JavaFX powered desktop & web application collecting useful resources for JavaFX development.

kcctl

A modern and intuitive command line client for Kafka Connect.

mcs

Search the Maven Central Repository from your command line!

Neo4j-Migrations

Automated script runner aka "Migrations" for Neo4j. Inspired by Flyway.

redis-field-engineering

Many projects in the redis-field-engineering organization make use of JReleaser.

Quarkus

Supersonic Subatomic Java.

SceneBuilder

Scene Builder is a visual, drag 'n' drop, layout tool for designing JavaFX application user interfaces.

SDKMAN!

The SDKMAN! Command Line Interface.

just

Command Line toolkit for developing Spring Boot applications.

vived.io

Curated and personalized IT news. JReleaser is used to build GraalVM-powered serverless functions.

Landscape

JReleaser is listed at the following landscapes:

Acknowledgments

JReleaser is heavily inspired by GoReleaser. It also builds on top of the lessons learned from JBang's original build setup. Since July 2021 JBang’s releases are now posted via JReleaser.