= Install

There are multiple choices depending on your preference.

== CLI
The xref:tools:jreleaser-cli.adoc[CLI] can be installed in the following ways:

[tabs]
====
Windows::
+
--
*sdkman*

Requires Java 8
[source]
----
sdk install jreleaser
----

*jbang*

Requires Java 8
[source]
.stable
----
// Download, cache, and run
jbang jreleaser@jreleaser <command> [<args>]
----
[source]
.early-access
----
// Download, cache, and run
jbang jreleaser-snapshot@jreleaser <command> [<args>]
----

*manually*

Download the pre-compiled binary from the link:https://github.com/jreleaser/jreleaser/releases[releases page],
uncompress and copy to the desired location.

NOTE: Be mindful that `jreleaser-{jreleaser-version}.zip` requires Java 8 to be installed while
`jreleaser-standalone-{jreleaser-version}-windows.zip` can be used without a previous installation of Java as
it includes its own Java Runtime.
--
Linux::
+
--
*sdkman*

Requires Java 8
[source]
----
sdk install jreleaser
----

*jbang*

Requires Java 8
[source]
.stable
----
// Download, cache, and run
jbang jreleaser@jreleaser <command> [<args>]
----
[source]
.early-access
----
// Download, cache, and run
jbang jreleaser-snapshot@jreleaser <command> [<args>]
----

*curl*

Requires Java 11
[source]
----
// Get the jreleaser downloader
curl -sL https://git.io/get-jreleaser > get_jreleaser.java

// Download JReleaser with version = <version>
// Change <version> to a tagged JReleaser release
// or leave it out to pull `latest`.
java get_jreleaser.java <version>

// Execute JReleaser
java -jar jreleaser-cli.jar <command> [<args>]
----

TIP: You may use `latest` to pull the latest stable release or `early-access` to pull the latest snapshot.

*manually*

Download the pre-compiled binary from the link:https://github.com/jreleaser/jreleaser/releases[releases page],
uncompress and copy to the desired location.

NOTE: Be mindful that `jreleaser-{jreleaser-version}.zip` requires Java 8 to be installed while
`jreleaser-standalone-{jreleaser-version}-linux.zip` can be used without a previous installation of Java as
it includes its own Java Runtime.
--
Mac::
+
--
*homebrew tap*

Requires Java 8
[source]
----
brew install jreleaser/tap/jreleaser
----

*sdkman*

Requires Java 8
[source]
----
sdk install jreleaser
----

*jbang*

Requires Java 8
[source]
.stable
----
// Download, cache, and run
jbang jreleaser@jreleaser <command> [<args>]
----
[source]
.early-access
----
// Download, cache, and run
jbang jreleaser-snapshot@jreleaser <command> [<args>]
----

*curl*

Requires Java 11
[source]
----
// Get the jreleaser downloader
curl -sL https://git.io/get-jreleaser > get_jreleaser.java

// Download JReleaser with version = <version>
// Change <version> to a tagged JReleaser release
// or leave it out to pull `latest`.
java get_jreleaser.java <version>

// Execute JReleaser
java -jar jreleaser-cli.jar <command> [<args>]
----

TIP: You may use `latest` to pull the latest stable release or `early-access` to pull the latest snapshot.

*manually*

Download the pre-compiled binary from the link:https://github.com/jreleaser/jreleaser/releases[releases page],
uncompress and copy to the desired location.

NOTE: Be mindful that `jreleaser-{jreleaser-version}.zip` requires Java 8 to be installed while
`jreleaser-standalone-{jreleaser-version}-osx.zip` can be used without a previous installation of Java as
it includes its own Java Runtime.
--
====

== Docker
You can run JReleaser as a docker image, skipping the need to have a pre-installed Java runtime. You must mount the
working directory at the `/workspace` volume, for example assuming the current directory is the starting point:

[source]
----
$ docker run -it --rm -v `(pwd)`:/workspace \
  jreleaser/<image>:<tag> <command> [<args>]
----

Where image may be `jreleaser-slim`, `jreleaser-alpine`.

NOTE: The `jreleaser` command will be automatically executed inside `/workspace`.

You may also need to map environment variables to the container, such as `JRELEASER_PROJECT_VERSION`,
`JRELEASER_GITHUB_TOKEN`, or others depending on your setup. Refer to the xref:configuration:index.adoc[] pages.

You can find the tag listing link:https://hub.docker.com/r/jreleaser/jreleaser-slim/tags[here].

== Maven
Configure the xref:tools:jreleaser-maven.adoc[jreleaser-maven-plugin] in your POM file

[source,xml]
[subs="verbatim,attributes"]
.pom.xml
----
<plugin>
  <groupId>org.jreleaser</groupId>
  <artifactId>jreleaser-maven-plugin</artifactId>
  <version>{jreleaser-version}</version>
</plugin>
----

== Gradle
Configure the xref:tools:jreleaser-gradle.adoc[jreleaser-gradle-plugin] in your `build.gradle` file

[source,groovy]
[subs="attributes"]
.build.gradle
----
plugins {
    id 'org.jreleaser' version '{jreleaser-version}'
}
----

== Ant
Download the xref:tools:jreleaser-ant.adoc[jreleaser-ant-tasks] ZIP bundle from the
link:https://github.com/jreleaser/jreleaser/releases[releases page] and unzip it in your project. Place all JARs inside
the `lib` folder. Create this folder if there is none. Add the following elements to your `build.xml` file

[source,xml]
[subs="verbatim,attributes"]
.build.xml
----
<path id="jreleaser.classpath">
    <fileset dir="lib">
        <include name="jreleaser-ant-tasks-{jreleaser-version}/*.jar"/>
    </fileset>
</path>

<import>
  <javaresource name="org/jreleaser/ant/targets.xml"
                classpathref="jreleaser.classpath"/>
</import>
----

