JReleaser CLI

Executes a JReleaser workflow as a command-line interface (CLI).

JReleaser is a release automation tool for Java projects.
Its goal is to simplify creating releases and publishing
artifacts to multiple package managers while providing
customizable options.

Usage: jreleaser [-hV] [-D=<key=value>]... [COMMAND]

Options:
  -D=<key=value>    Sets a System property. 🔁
  -h, --help        Show this help message and exit.
  -V, --version     Print version information and exit.

Commands:
  env                  Display environment variable names.
  init                 Create a jreleaser config file.
  config               Display current configuration.
  template             Generate or eval templates.
  download             Download assets.
  assemble             Assemble distributions.
  changelog            Calculate the changelog.
  catalog              Catalog artifacts and files.
  checksum             Calculate checksums.
  sign                 Sign release artifacts.
  deploy               Deploy all staged artifacts.
  upload               Upload all artifacts.
  release              Create or update a release.
  prepare              Prepare all distributions.
  package              Package all distributions.
  publish              Publish all distributions.
  announce             Announce a release.
  full-release         Perform a full release.
  generate-completion  Generate bash/zsh completion script for jreleaser.
  json-schema          Generate JSON schema.

Documentation found at https://jreleaser.org

Environment Variables

The following settings may also be specified via environment variables

Setting Environment Variable Default

basedir

JRELEASER_BASEDIR

<current-execution-directory>

output-directory

JRELEASER_OUTPUT_DIRECTORY

out

dry-run

JRELEASER_DRY_RUN

false

strict

JRELEASER_STRICT

false

git-root-search

JRELEASER_GIT_ROOT_SEARCH

false

select-current-platform

JRELEASER_SELECT_CURRENT_PLATFORM

false

select-platform

JRELEASER_SELECT_PLATFORMS

<empty-string>

reject-platform

JRELEASER_REJECT_PLATFORMS

<empty-string>

JRELEASER_DEFAULT_GIT_REMOTE

origin

JRELEASER_SELECT_PLATFORMs and JRELEASER_REJECT_PLATFORMs may define a command separated list of values such as osx-x86_64,linux-x86_64.

These additional environment variables are supported as well:

Environment Variable Description

NO_COLOR

disable colors in output

JRELEASER_NO_COLOR

disable colors in output

Filtering Artifacts

Many commands let you filter (include or exclude) artifacts using a combination of command flags or environment variables. This filter capability allows you to test out a release configuration on a node where not all artifacts may be available. For example, when building on linux-x86_64 while also having osx-x86_64 and windows-x86_64.

Include only for the current platform

Use the JRELEASER_SELECT_CURRENT_PLATFORM environment variable or the --select-current-platform command flag.

$ JRELEASER_SELECT_CURRENT_PLATFORM jreleaser checksum
$ jreleaser checksum --select-current-platform
Include a specific platform

Use the JRELEASER_SELECT_PLATFORMS environment variable or the --select-platform command flag, i.e,

$ JRELEASER_SELECT_PLATFORMS=osx-x86_64 jreleaser checksum
$ jreleaser checksum --select-platform=osx-x86_64

Every artifact whose platform property does not match the given platform will end up filtered out.

Exclude a specific platform

Use the JRELEASER_REJECT_PLATFORMS environment variable or the --reject-platform command flag, i.e,

$ JRELEASER_REJECT_PLATFORMS=windows-x86_64 jreleaser checksum
$ jreleaser checksum --reject-platform=windows-x86_64

Every artifact whose platform property matches the given platform will end up filtered out.

Install

  • Windows

  • Linux

  • Mac

sdkman

sdk install jreleaser

manually

Download the pre-compiled binary from the releases page, uncompress and copy to the desired location.

sdkman

sdk install jreleaser

manually

Download the pre-compiled binary from the releases page, uncompress and copy to the desired location.

homebrew tap

brew install jreleaser/tap/jreleaser

sdkman

sdk install jreleaser

manually

Download the pre-compiled binary from the releases page, uncompress and copy to the desired location.

Configuration

JReleaser must be configured using the YAML, TOML, or JSON DSLs shown at Reference.

Commands

The following commands are supported:

env

$ jreleaser env -h
Display environment variable names.

Usage: jreleaser env [-hV] [-D=<key=value>]...

Options:
  -D=<key=value>    Sets a System property. 🔁
  -h, --help        Show this help message and exit.
  -V, --version     Print version information and exit.

Documentation found at https://jreleaser.org

init

$ jreleaser init -h
Create a jreleaser config file.

Usage: jreleaser init [-ghioqVw] [-b=<directory>] [-f=<format>] [-od=<directory>] [-D=<key=value>]...

Options:
  -b, --basedir=<directory>                 Base directory.
  -D=<key=value>                            Sets a System property. 🔁
  -f, --format=<format>                     Configuration file format.
  -g, --debug                               Set log level to debug.
  -h, --help                                Show this help message and exit.
  -i, --info                                Set log level to info.
  -o, --overwrite                           Overwrite existing files.
      -od, --output-directory=<directory>   Output directory.
  -q, --quiet                               Log errors only.
  -V, --version                             Print version information and exit.
  -w, --warn                                Set log level to warn.

Documentation found at https://jreleaser.org

Currently supported formats are: yml, json, and toml.

The file will be generated at <basedir> if specified, otherwise at the current directory.

config

$ jreleaser config -h
Display current configuration.

Usage: jreleaser config [-fghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                        [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                        [--announce | -a | --changelog | -d]

Options:
  -a, --assembly                            Display assembly configuration.
      --announce                            Display announce configuration.
  -b, --basedir=<directory>                 Base directory.
  -c, --config-file=<file>                  The config file.
      --changelog                           Display changelog configuration.
  -d, --download                            Display download configuration.
  -D=<key=value>                            Sets a System property. 🔁
  -f, --full                                Display full configuration.
  -g, --debug                               Set log level to debug.
      -grs, --git-root-search               Searches for the Git root.
  -h, --help                                Show this help message and exit.
  -i, --info                                Set log level to info.
      -od, --output-directory=<directory>   Output directory.
  -P, --set-property=<key=value>            Sets the value of a property. 🔁
  -q, --quiet                               Log errors only.
      -rp, --reject-platform=<platform>     Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform       Activates paths matching the current platform.
      -sp, --select-platform=<platform>     Activates paths matching the given platform. 🔁
      --strict                              Enable strict mode.
  -V, --version                             Print version information and exit.
  -w, --warn                                Set log level to warn.

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

template

$ jreleaser template -h
Generate or eval templates.

Usage: jreleaser template [-hV] [-D=<key=value>]... [COMMAND]

Options:
  -D=<key=value>    Sets a System property. 🔁
  -h, --help        Show this help message and exit.
  -V, --version     Print version information and exit.

Commands:
  generate  Generate a packager/announcer template.
  eval      Evaluate a template or templates.

Documentation found at https://jreleaser.org

template generate

$ jreleaser template generate -h
Generate a packager/announcer template.

Usage: jreleaser template generate [-ghioqVw] [-sn] [-b=<directory>] [-od=<directory>] [-D=<key=value>]...
                                   ([-a=<announcer>] | [-st=<type> -s=<name>] | [-d=<distribution>
                                   -p=<packager> [-dt=<type>]])

Options:
  -b, --basedir=<directory>                 Base directory.
  -D=<key=value>                            Sets a System property. 🔁
  -g, --debug                               Set log level to debug.
  -h, --help                                Show this help message and exit.
  -i, --info                                Set log level to info.
  -o, --overwrite                           Overwrite existing files.
      -od, --output-directory=<directory>   Output directory.
  -q, --quiet                               Log errors only.
      -sn, --snapshot                       Use snapshot templates.
  -V, --version                             Print version information and exit.
  -w, --warn                                Set log level to warn.

Announcer templates
  -a, --announcer=<announcer>               The name of the announcer.

Assembler templates
  -s, --assembler-name=<name>               The name of the assembler.
      -st, --assembler-type=<type>          The type of the assembler.

Packager templates
  -d, --distribution=<distribution>         The name of the distribution.
      -dt, --distribution-type=<type>       The type of the distribution.
                                            Defaults to JAVA_BINARY.
  -p, --packager=<packager>                 The name of the packager.

Documentation found at https://jreleaser.org

If --basedir is undefined then the command assumes it’s the current directory.

Announcer and tool settings are mutually exclusive.

The value of --announcer must match any of the available announcers.

The value of --assembler-type must match any of the available assemblers while the value of --assembler-name must match any of the available assembler names.

The value of --distribution must match the name of a configured distribution.

The value of --distribution-type must match any of the available distribution types.

The value of --packager must match any of the available Packagers.

template eval

$ jreleaser template eval
Evaluate a template or templates.

Usage: jreleaser template eval [-ghioqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                               [-od=<directory>] --target-directory=<directory> [-D=<key=value>]...
                               [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]... [--announce | -a |
                               --changelog | -d] (--input-file=<file> | --input-directory=<directory>)

Options:
  -a, --assembly                            Eval model in assembly configuration.
      --announce                            Eval model in announce configuration.
  -b, --basedir=<directory>                 Base directory.
  -c, --config-file=<file>                  The config file.
      --changelog                           Eval model in changelog configuration.
  -d, --download                            Eval model in download configuration.
  -D=<key=value>                            Sets a System property. 🔁
  -g, --debug                               Set log level to debug.
      -grs, --git-root-search               Searches for the Git root.
  -h, --help                                Show this help message and exit.
  -i, --info                                Set log level to info.
      --input-directory=<directory>         A directory with input templates.
      --input-file=<file>                   An input template file.
  -o, --overwrite                           Overwrite existing files.
      -od, --output-directory=<directory>   Output directory.
  -P, --set-property=<key=value>            Sets the value of a property. 🔁
  -q, --quiet                               Log errors only.
      -rp, --reject-platform=<platform>     Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform       Activates paths matching the current platform.
      -sp, --select-platform=<platform>     Activates paths matching the given platform. 🔁
      --strict                              Enable strict mode.
      --target-directory=<directory>        Directory where evaluated template(s) will be placed.
  -V, --version                             Print version information and exit.
  -w, --warn                                Set log level to warn.

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

download

Executes the Download workflow step.

$ jreleaser download -h
Download assets.

Usage: jreleaser download [-ghiqVw] [--dry-run] [-grs] [--strict] [-b=<directory>] [-c=<file>]
                          [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [[[-d=<downloader>]...
                          [-dn=<name>]...] | [[-xd=<downloader>]... [-xdn=<name>]...]]

Options:
  -b, --basedir=<directory>                    Base directory.
  -c, --config-file=<file>                     The config file.
  -D=<key=value>                               Sets a System property. 🔁
      --dry-run                                Skip remote operations.
  -g, --debug                                  Set log level to debug.
      -grs, --git-root-search                  Searches for the Git root.
  -h, --help                                   Show this help message and exit.
  -i, --info                                   Set log level to info.
      -od, --output-directory=<directory>      Output directory.
  -P, --set-property=<key=value>               Sets the value of a property. 🔁
  -q, --quiet                                  Log errors only.
      --strict                                 Enable strict mode.
  -V, --version                                Print version information and exit.
  -w, --warn                                   Set log level to warn.

Include Filter:
  -d, --downloader=<downloader>                Include a downloader by type. 🔁
      -dn, --downloader-name=<name>            Include a downloader by name. 🔁

Exclude Filter:
      -xd, --exclude-downloader=<downloader>   Exclude a downloader by type. 🔁
      -xdn, --exclude-downloader-name=<name>   Exclude a downloader by name. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --downloader and --exclude-downloader-type must match the type of configured downloader.

The value of --downloader-name and --exclude-downloader-name must match any of the available named downloaders.

This command must be invoked separately from the others.

assemble

Executes the Assemble workflow step.

$ jreleaser assemble -h
Assemble distributions.

Usage: jreleaser assemble [-ghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                          [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                          [[[-s=<assembler>]... [-d=<distribution>]...] | [[-xs=<assembler>]...
                          [-xd=<distribution>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -s, --assembler=<assembler>                      Include an assembler. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xs, --exclude-assembler=<assembler>         Exclude an assembler. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --assembler and --exclude-assembler must match any of the available assemblers.

The value of --distribution and --exclude-distribution must match the name of a configured assembler found in the assemblers section.

This command must be invoked separately from the others as some assemblers are platform specific.

changelog

Executes the Changelog workflow step.

$ jreleaser changelog -h
Calculate the changelog.

Usage: jreleaser changelog [-ghiqVw] [--dry-run] [-grs] [--strict] [-b=<directory>] [-c=<file>]
                           [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]...

Options:
  -b, --basedir=<directory>                 Base directory.
  -c, --config-file=<file>                  The config file.
  -D=<key=value>                            Sets a System property. 🔁
      --dry-run                             Skip remote operations.
  -g, --debug                               Set log level to debug.
      -grs, --git-root-search               Searches for the Git root.
  -h, --help                                Show this help message and exit.
  -i, --info                                Set log level to info.
      -od, --output-directory=<directory>   Output directory.
  -P, --set-property=<key=value>            Sets the value of a property. 🔁
  -q, --quiet                               Log errors only.
      --strict                              Enable strict mode.
  -V, --version                             Print version information and exit.
  -w, --warn                                Set log level to warn.

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

catalog

Executes the Catalog workflow step.

$ jreleaser catalog -h
Catalog artifacts and files.

Usage: jreleaser catalog [-ghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                         [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                         [[[--distribution=<distribution>]... [--cataloger=<cataloger>]...] |
                         [[--exclude-distribution=<distribution>]... [--exclude-cataloger=<cataloger>]...]]

Options:
  -b, --basedir=<directory>                   Base directory.
  -c, --config-file=<file>                    The config file.
  -D=<key=value>                              Sets a System property. 🔁
  -g, --debug                                 Set log level to debug.
      -grs, --git-root-search                 Searches for the Git root.
  -h, --help                                  Show this help message and exit.
  -i, --info                                  Set log level to info.
      -od, --output-directory=<directory>     Output directory.
  -P, --set-property=<key=value>              Sets the value of a property. 🔁
  -q, --quiet                                 Log errors only.
      -rp, --reject-platform=<platform>       Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform         Activates paths matching the current platform.
      -sp, --select-platform=<platform>       Activates paths matching the given platform. 🔁
      --strict                                Enable strict mode.
  -V, --version                               Print version information and exit.
  -w, --warn                                  Set log level to warn.

Include Filter:
      --cataloger=<cataloger>                 Include a cataloger. 🔁
      --distribution=<distribution>           Include a distribution. 🔁

Exclude Filter:
      --exclude-cataloger=<cataloger>         Exclude a cataloger. 🔁
      --exclude-distribution=<distribution>   Exclude a distribution. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

checksum

Executes the Checksum workflow step.

$ jreleaser checksum -h
Calculate checksums.

Usage: jreleaser checksum [-ghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                          [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                          [[[-d=<distribution>]...] | [[-xd=<distribution>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution found in the distribution section.

sign

Executes the Sign workflow step.

$ jreleaser sign -h
Sign release artifacts.

Usage: jreleaser sign [-ghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                      [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                      [[[-d=<distribution>]...] | [[-xd=<distribution>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution found in the distribution section.

deploy

Executes the Deploy workflow step.

$ jreleaser deploy -h
Deploy all staged artifacts.

Usage: jreleaser deploy [-ghiqVw] [--dry-run] [-grs] [--strict] [-b=<directory>] [-c=<file>]
                        [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [[[-y=<deployer>]...
                        [-yn=<name>]...] | [[-xy=<deployer>]... [-xyn=<name>]...]]

Options:
  -b, --basedir=<directory>                  Base directory.
  -c, --config-file=<file>                   The config file.
  -D=<key=value>                             Sets a System property. 🔁
      --dry-run                              Skip remote operations.
  -g, --debug                                Set log level to debug.
      -grs, --git-root-search                Searches for the Git root.
  -h, --help                                 Show this help message and exit.
  -i, --info                                 Set log level to info.
      -od, --output-directory=<directory>    Output directory.
  -P, --set-property=<key=value>             Sets the value of a property. 🔁
  -q, --quiet                                Log errors only.
      --strict                               Enable strict mode.
  -V, --version                              Print version information and exit.
  -w, --warn                                 Set log level to warn.

Include Filter:
  -y, --deployer=<deployer>                  Include a deployer by type. 🔁
      -yn, --deployer-name=<name>            Include a deployer by name. 🔁

Exclude Filter:
      -xy, --exclude-deployer=<deployer>     Exclude a deployer by type. 🔁
      -xyn, --exclude-deployer-name=<name>   Exclude a deployer by name. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --deployer and --exclude-deployer must match the type of configured deployer.

The value of --deployer-name and --exclude-deployer-name must match any of the available named deployers.

Use --dry-run during development to verify your configuration settings. No network deploys nor repository mutations should occur when this mode is activated.

You may invoke this command in the following ways:

Deploy all artifacts:

$ jreleaser deploy

Deploy all artifacts to all configured Artifactory deployers:

$ jreleaser deploy --deployer artifactory

Deploy all artifacts with all deployers with matching name:

$ jreleaser deploy --deployer-name mine

Deploy all artifacts to a matching Artifactory deployer:

$ jreleaser deploy --deployer artifactory --deployer-name mine

upload

Executes the Upload workflow step.

$ jreleaser upload -h
Upload all artifacts.

Usage: jreleaser upload [-ghiqVw] [--dry-run] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                        [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]...
                        [-sp=<platform>]... [[[-u=<uploader>]... [-un=<name>]... [-d=<distribution>]...
                        [--cataloger=<cataloger>]...] | [[-xu=<uploader>]... [-xun=<name>]...
                        [-xd=<distribution>]... [--exclude-cataloger=<cataloger>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
      --dry-run                                    Skip remote operations.
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
      --cataloger=<cataloger>                      Include a cataloger. 🔁
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -u, --uploader=<uploader>                        Include an uploader by type. 🔁
      -un, --uploader-name=<name>                  Include an uploader by name. 🔁

Exclude Filter:
      --exclude-cataloger=<cataloger>              Exclude a cataloger. 🔁
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xu, --exclude-uploader=<uploader>           Exclude an uploader by type. 🔁
      -xun, --exclude-uploader-name=<name>         Exclude an uploader by name. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --uploader and --exclude-uploader-type must match the type of configured uploader.

The value of --uploader-name and --exclude-uploader-name must match any of the available named uploaders.

Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

You may invoke this command in the following ways:

Upload all artifacts:

$ jreleaser upload

Upload all artifacts to all configured Artifactory uploaders:

$ jreleaser upload --uploader-type artifactory

Upload all artifacts with all uploaders with matching name:

$ jreleaser upload --uploader-name mine

Upload all artifacts to a matching Artifactory uploader:

$ jreleaser upload --uploader-type artifactory --uploader-name mine

release

Executes the Release workflow step.

$ jreleaser release -h
Create or update a release.

Usage: jreleaser release [-ghiqVw] [--dry-run] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                         [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]...
                         [-sp=<platform>]... [[[-d=<distribution>]... [-y=<deployer>]... [-yn=<name>]...
                         [-u=<uploader>]... [-un=<name>]... [--cataloger=<cataloger>]...] |
                         [[-xd=<distribution>]... [-xy=<deployer>]... [-xyn=<name>]... [-xu=<uploader>]...
                         [-xun=<name>]... [--exclude-cataloger=<cataloger>]...] | [[--auto-config]
                         [--project-name=<name>] [--project-version=<version>]
                         [--project-version-pattern=<pattern>] [--project-snapshot-pattern=<pattern>]
                         [--project-snapshot-label=<label>] [--project-snapshot-full-changelog]
                         [--project-copyright=<copyright>] [--project-description=<description>]
                         [--project-inception-year=<year>] [--project-stereotype=<stereotype>]
                         [--author=<author>]... [--tag-name=<tag>] [--previous-tag-name=<tag>]
                         [--release-name=<name>] [--milestone-name=<name>] [--prerelease]
                         [--prerelease-pattern=<pattern>] [--draft] [--overwrite] [--update]
                         [--update-section=<section>]... [--skip-tag] [--skip-release] [--skip-checksums]
                         [--branch=<branch>] [--changelog=<changelog>] [--changelog-formatted]
                         [--username=<username>] [--commit-author-name=<name>]
                         [--commit-author-email=<email>] [--signing-enabled] [--signing-armored]
                         [--file=<file>]... [--glob=<glob>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
      --dry-run                                    Skip remote operations.
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
      --cataloger=<cataloger>                      Include a cataloger. 🔁
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -u, --uploader=<uploader>                        Include an uploader by type. 🔁
      -un, --uploader-name=<name>                  Include an uploader by name. 🔁
  -y, --deployer=<deployer>                        Include a deployer by type. 🔁
      -yn, --deployer-name=<name>                  Include a deployer by name. 🔁

Exclude Filter:
      --exclude-cataloger=<cataloger>              Exclude a cataloger. 🔁
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xu, --exclude-uploader=<uploader>           Exclude an uploader by type. 🔁
      -xun, --exclude-uploader-name=<name>         Exclude an uploader by name. 🔁
      -xy, --exclude-deployer=<deployer>           Exclude a deployer by type. 🔁
      -xyn, --exclude-deployer-name=<name>         Exclude a deployer by name. 🔁

Auto Config Options:
      --author=<author>                            The project authors. 🔁
      --auto-config                                Activate auto configuration.
      --branch=<branch>                            The release branch.
      --changelog=<changelog>                      Path to changelog file.
      --changelog-formatted                        Format generated changelog.
      --commit-author-email=<email>                Commit author e-mail.
      --commit-author-name=<name>                  Commit author name.
      --draft                                      If the release is a draft.
      --file=<file>                                Input file to be uploaded. 🔁
      --glob=<glob>                                Input file to be uploaded (as glob). 🔁
      --milestone-name=<name>                      The milestone name.
      --overwrite                                  Overwrite an existing release.
      --prerelease                                 If the release is a prerelease.
      --prerelease-pattern=<pattern>               The prerelease pattern.
      --previous-tag-name=<tag>                    The previous release tag.
      --project-copyright=<copyright>              The project copyright.
      --project-description=<description>          The project description.
      --project-inception-year=<year>              The project inception year.
      --project-name=<name>                        The project name.
      --project-snapshot-full-changelog            Calculate full changelog since last non-snapshot release.
      --project-snapshot-label=<label>             The project snapshot label.
      --project-snapshot-pattern=<pattern>         The project snapshot pattern.
      --project-stereotype=<stereotype>            The project stereotype.
      --project-version=<version>                  The project version.
      --project-version-pattern=<pattern>          The project version pattern.
      --release-name=<name>                        The release name.
      --signing-armored                            Generate ascii armored signatures.
      --signing-enabled                            Sign files.
      --skip-checksums                             Skip creating checksums.
      --skip-release                               Skip creating a release.
      --skip-tag                                   Skip tagging the release.
      --tag-name=<tag>                             The release tag.
      --update                                     Update an existing release.
      --update-section=<section>                   Release section to be updated. 🔁
      --username=<username>                        Git username.

Documentation found at https://jreleaser.org

There are two usage modes:

  • auto config

  • with explicit configuration file

AutoConfig

If --basedir is undefined then the command assumes it’s the same directory where the command is run.

The --file parameter is repeatable.

The --glob parameter must be quote, for example --glob "target/*.jar".

Explicit Configuration file

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution found in the distribution section.

None of the command flags that override model properties can be used in this mode.
Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

prepare

Executes the Prepare workflow step.

$ jreleaser prepare -h
Prepare all distributions.

Usage: jreleaser prepare [-ghiqVw] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>] [-od=<directory>]
                         [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]... [-sp=<platform>]...
                         [[[-d=<distribution>]... [-p=<packager>]...] | [[-xd=<distribution>]...
                         [-xp=<packager>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -p, --packager=<packager>                        Include a packager. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xp, --exclude-packager=<packager>           Exclude a packager. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution.

The value of --packager and --exclude-packager must match any of the available Packagers.

You may invoke this command in the following ways:

Prepare all distributions:

$ jreleaser prepare

Prepare a single distribution with all configured tools:

$ jreleaser prepare --distribution-name app

Prepare all distributions with a single tool:

$ jreleaser prepare --packager-name brew

Prepare a single distribution with a single tool:

$ jreleaser prepare --distribution-name app --packager-name brew

package

Executes the Package workflow step.

$ jreleaser package -h
Package all distributions.

Usage: jreleaser package [-ghiqVw] [--dry-run] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                         [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]...
                         [-sp=<platform>]... [[[-d=<distribution>]... [-p=<packager>]...] |
                         [[-xd=<distribution>]... [-xp=<packager>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
      --dry-run                                    Skip remote operations.
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -p, --packager=<packager>                        Include a packager. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xp, --exclude-packager=<packager>           Exclude a packager. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution.

The value of --packager and --exclude-packager must match any of the available Packagers.

You may invoke this command in the following ways:

Package all distributions:

$ jreleaser package

Package a single distribution with all configured tools:

$ jreleaser package --distribution-name app

Package all distributions with a single tool:

$ jreleaser package --packager-name brew

Package a single distribution with a single tool:

$ jreleaser package --distribution-name app --packager-name brew
Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

publish

Executes the Publish workflow step.

$ jreleaser publish -h
Publish all distributions.

Usage: jreleaser publish [-ghiqVw] [--dry-run] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                         [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]...
                         [-sp=<platform>]... [[[-d=<distribution>]... [-p=<packager>]...] |
                         [[-xd=<distribution>]... [-xp=<packager>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
      --dry-run                                    Skip remote operations.
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -p, --packager=<packager>                        Include a packager. 🔁

Exclude Filter:
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xp, --exclude-packager=<packager>           Exclude a packager. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --distribution and --exclude-distribution must match the name of a configured distribution.

The value of --packager and --exclude-packager must match any of the available Packagers.

You may invoke this command in the following ways:

Publish all distributions:

$ jreleaser publish

Publish a single distribution with all configured tools:

$ jreleaser publish --distribution-name app

Publish all distributions with a single tool:

$ jreleaser publish --packager-name brew

Publish a single distribution with a single tool:

$ jreleaser publish --distribution-name app --packager-name brew
Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

announce

Executes the Announce workflow step.

$ jreleaser announce -h
Announce a release.

Usage: jreleaser announce [-ghiqVw] [--dry-run] [-grs] [--strict] [-b=<directory>] [-c=<file>]
                          [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [[[-a=<announcer>]...] |
                          [[-xa=<announcer>]...]]

Options:
  -b, --basedir=<directory>                  Base directory.
  -c, --config-file=<file>                   The config file.
  -D=<key=value>                             Sets a System property. 🔁
      --dry-run                              Skip remote operations.
  -g, --debug                                Set log level to debug.
      -grs, --git-root-search                Searches for the Git root.
  -h, --help                                 Show this help message and exit.
  -i, --info                                 Set log level to info.
      -od, --output-directory=<directory>    Output directory.
  -P, --set-property=<key=value>             Sets the value of a property. 🔁
  -q, --quiet                                Log errors only.
      --strict                               Enable strict mode.
  -V, --version                              Print version information and exit.
  -w, --warn                                 Set log level to warn.

Include Filter:
  -a, --announcer=<announcer>                Include an announcer. 🔁

Exclude Filter:
      -xa, --exclude-announcer=<announcer>   Exclude an announcer. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

The value of --announcer and --exclude-announcer must match any of the available announcers.

You may invoke this command in the following ways:

Announce with all configured announcers:

$ jreleaser announce

Announce with a single announcer:

$ jreleaser announce --announcer-name brew
Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

full-release

Executes the Full Release workflow step.

$ jreleaser full-release -h
Perform a full release.

Usage: jreleaser full-release [-ghiqVw] [--dry-run] [-grs] [-scp] [--strict] [-b=<directory>] [-c=<file>]
                              [-od=<directory>] [-D=<key=value>]... [-P=<key=value>]... [-rp=<platform>]...
                              [-sp=<platform>]... [[[-y=<deployer>]... [-yn=<name>]... [-u=<uploader>]...
                              [-un=<name>]... [-d=<distribution>]... [-p=<packager>]... [-a=<announcer>]...
                              [--cataloger=<cataloger>]...] | [[-xy=<deployer>]... [-xyn=<name>]...
                              [-xu=<uploader>]... [-xun=<name>]... [-xd=<distribution>]...
                              [-xp=<packager>]... [-xa=<announcer>]... [--exclude-cataloger=<cataloger>]...]]

Options:
  -b, --basedir=<directory>                        Base directory.
  -c, --config-file=<file>                         The config file.
  -D=<key=value>                                   Sets a System property. 🔁
      --dry-run                                    Skip remote operations.
  -g, --debug                                      Set log level to debug.
      -grs, --git-root-search                      Searches for the Git root.
  -h, --help                                       Show this help message and exit.
  -i, --info                                       Set log level to info.
      -od, --output-directory=<directory>          Output directory.
  -P, --set-property=<key=value>                   Sets the value of a property. 🔁
  -q, --quiet                                      Log errors only.
      -rp, --reject-platform=<platform>            Activates paths not matching the given platform. 🔁
      -scp, --select-current-platform              Activates paths matching the current platform.
      -sp, --select-platform=<platform>            Activates paths matching the given platform. 🔁
      --strict                                     Enable strict mode.
  -V, --version                                    Print version information and exit.
  -w, --warn                                       Set log level to warn.

Include Filter:
  -a, --announcer=<announcer>                      Include an announcer. 🔁
      --cataloger=<cataloger>                      Include a cataloger. 🔁
  -d, --distribution=<distribution>                Include a distribution. 🔁
  -p, --packager=<packager>                        Include a packager. 🔁
  -u, --uploader=<uploader>                        Include an uploader by type. 🔁
      -un, --uploader-name=<name>                  Include an uploader by name. 🔁
  -y, --deployer=<deployer>                        Include a deployer by type. 🔁
      -yn, --deployer-name=<name>                  Include a deployer by name. 🔁

Exclude Filter:
      --exclude-cataloger=<cataloger>              Exclude a cataloger. 🔁
      -xa, --exclude-announcer=<announcer>         Exclude an announcer. 🔁
      -xd, --exclude-distribution=<distribution>   Exclude a distribution. 🔁
      -xp, --exclude-packager=<packager>           Exclude a packager. 🔁
      -xu, --exclude-uploader=<uploader>           Exclude an uploader by type. 🔁
      -xun, --exclude-uploader-name=<name>         Exclude an uploader by name. 🔁
      -xy, --exclude-deployer=<deployer>           Exclude a deployer by type. 🔁
      -xyn, --exclude-deployer-name=<name>         Exclude a deployer by name. 🔁

Documentation found at https://jreleaser.org

If --config-file is undefined then the command assumes the file is named jreleaser.[yml|toml|json] and it’s found at the current directory.

If --basedir is undefined then the command assumes it’s the same directory that contains the resolved config file.

Use --dry-run during development to verify your configuration settings. No network uploads nor repository mutations should occur when this mode is activated.

generate-completion

$ jreleaser jreleaser generate-completion -h
JReleaser is a release automation tool for Java projects.

Usage: jreleaser generate-completion [-hV]
Generate bash/zsh completion script for jreleaser.
Run the following command to give `jreleaser` TAB completion in the current shell:

  source <(jreleaser generate-completion)


Options:
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.

Documentation found at https://jreleaser.org

json-schema

$ jreleaser json-schema -h
Generate JSON schema.

Usage: jreleaser json-schema [-hV] [-D=<key=value>]...

Options:
  -D=<key=value>    Sets a System property. 🔁
  -h, --help        Show this help message and exit.
  -V, --version     Print version information and exit.

Documentation found at https://jreleaser.org