JDKs Gradle Plugin

Downloads JDK distributions.

Requires Gradle 8.x.


plugins {
    id 'org.jreleaser.jdks' version '1.14.0-SNAPSHOT'

Configuration DSL

JDKS must define the following properties:

  • name: a user defined name, must be unique.

  • url: the URL from where the JDK can be downloaded.

  • checksum: the checksum value used to verify the archive’s integrity.

  • platform: the platform this JDK is related to.

The checksum property accepts thew following formats:

  • <algorithm>/<checksum>

  • <checksum>

The value of <algorithm> must match those specified at MessageDigest section in the Java Security Standard Algorithm Names Specification. If no value for <algorithm> is given then SHA-256 is assumed.

The value of platform is dictated by the normalized values detected by os-maven-plugin. You may use the plain platform value or append a arch classifier. The following values are currently recognized:


aix, hpux, os400, linux, linux_musl, osx, freebsd, openbsd, netbsd, sunos, windows, zos.


x86_64, x86_32, itanium_64, itanium_32, sparc_32, sparc_64, arm_32, aarch_64, mips_32, mipsel_32, mips_64, mipsel_64, ppc_32, ppcle_32, ppc_64, ppcle_64, s390_32, s390_64, riscv


  • osx

  • osx-aarch_64

  • windows

  • linux

  • linux-x86_64

Use linux_musl for artifacts that target Alpine Linux.

Platform detection may be overridden by defining an environment variable or a System property named JRELEASER_PLATFORM_OVERRIDE.

Here’s an example configuration

jdks {
    zulu11Linux {
        platform = 'linux'
        url = 'https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip'
        checksum = '9d1718ef74c29a8148b67ddd90bc9267fc1614e0a1eb0f4ea16e234e86419a60'
    zulu11Windows {
        platform = 'windows'
        url = 'https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip'
        checksum = '7bcbaedecca73811f70a5ee89e9258afff9bc009286449d97d9b3105f52a1a3a'
    zulu11Osx {
        platform = 'osx'
        url = 'https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip'
        checksum = 'abc3a9696fb6c10efcf3c5878cdb049244b0ba5dcc7141c6f0f88b99df626d2a'


The following tasks are provided per JDK


Copies a JDK archive from the Gradle cache directory into the build directory.


Deletes a JDK archive from the Gradle cache directory.


Downloads a JDK with a matching name.


Verifies the integrity of the JDK archive with a matching name.


Unpacks the JDK archive with a matching name.

The following tasks are provided for all JDKS


Deletes all cached JDKS.


Downloads all configured JDKS.


Verifies all configured JDKS.


Unpacks all configured JDKS.


Downloads, verifies, and unpacks all configured JDKS.


Lists all configured JDKS.


Copies all JDK archives to the Gradle cache directory.


Copies all JDK archives from the Gradle cache directory to the build directory.


Listing all JDKS

$ gm listJdks

> Task :listJdks
== JDK zulu11Linux ==
url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
checksum: 9d1718ef74c29a8148b67ddd90bc9267fc1614e0a1eb0f4ea16e234e86419a60
platform: linux

== JDK zulu11Osx ==
url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
checksum: abc3a9696fb6c10efcf3c5878cdb049244b0ba5dcc7141c6f0f88b99df626d2a
platform: osx

== JDK zulu11Windows ==
url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip
checksum: 7bcbaedecca73811f70a5ee89e9258afff9bc009286449d97d9b3105f52a1a3a
platform: windows

Setup all JDKS

$ gm setuJdks

> Task :downloadJdkZulu11Linux
Download https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip

> Task :downloadJdkZulu11Osx
Download https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip

> Task :downloadJdkZulu11Windows
Download https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip

> Task :downloadJdks
> Task :verifyJdkZulu11Linux
> Task :unpackJdkZulu11Linux
> Task :verifyJdkZulu11Osx
> Task :unpackJdkZulu11Osx
> Task :verifyJdkZulu11Windows
> Task :unpackJdkZulu11Windows
> Task :unpackJdks
> Task :verifyJdks
> Task :setupJdks
> Task :copyJdksToCache

All tasks are added to the JDKS group

$ gm tasks --group=JDKS

> Task :tasks

Tasks runnable from root project 'app'

Jdks tasks
copyJdkFromCacheZulu11Linux - Copy JDK zulu11Linux from cache
copyJdkFromCacheZulu11Osx - Copy JDK zulu11Osx from cache
copyJdkFromCacheZulu11Windows - Copy JDK zulu11Windows from cache
copyJdksFromCache - Copy JDKs from Gradle cache
copyJdksToCache - Copy JDKs to Gradle cache
deleteJdkFromCacheZulu11Linux - Delete JDK zulu11Linux from cache
deleteJdkFromCacheZulu11Osx - Delete JDK zulu11Osx from cache
deleteJdksFromCache - Delete JDKs from Gradle cache
downloadJdks - Download all JDKs
downloadJdkZulu11Linux - Download JDK zulu11Linux
downloadJdkZulu11Osx - Download JDK zulu11Osx
downloadJdkZulu11Windows - Download JDK zulu11Windows
listJdks - Lists all JDKs
setupJdks - Setups all JDKs
unpackJdks - Unpack all JDKs
unpackJdkZulu11Linux - Unpack JDK zulu11Linux
unpackJdkZulu11Osx - Unpack JDK zulu11Osx
unpackJdkZulu11Windows - Unpack JDK zulu11Windows
verifyJdks - Verify all JDKs
verifyJdkZulu11Linux - Verify JDK zulu11Linux
verifyJdkZulu11Osx - Verify JDK zulu11Osx
verifyJdkZulu11Windows - Verify JDK zulu11Windows