JDKs Maven Plugin
Downloads JDK distributions.
Install
<plugin>
<groupId>org.jreleaser</groupId>
<artifactId>jdks-maven-plugin</artifactId>
<version>1.21.0-SNAPSHOT</version>
<inherited>false</inherited>
</plugin>
Maven plugins are inherited by default. Make sure to set <inherited>false</inherited> when configuring this
plugin in a multi-module setup.
|
Configuration DSL
JDKs must be defined either using the Foojay Disco API or explicitly.
Foojay Disco API
Pkgs must define the following properties
-
name: a user defined name, must be unique. -
version: the version of the JDK. -
platform: the platform this JDK is related to. -
distribution: the distribution that provides the JDK. Defaults tozulu. -
archiveType: the extension file. Defaults tozip. -
libcType: one of [c_std_lib,glibc,libc,musl]. Defaults tonull. -
javafxBundled: whether JavaFx should be bundled or not. Defaults tofalse. -
packageType: one of [jdk,jre]. Defaults tojdk. -
releaseStatus: one of [ea,ga]. Defaults tonull. -
termOfSupport: one of [sts,mts,lts]. Defaults tonull. -
bitness: one of [32,64]. Defaults tonull. -
filename: filename of the downloaded package. Defaults tonull.
Please be as specific as you can with the value of version to reduce the number of matches packages and increase
reproducibility, for example 11.0.13 is better than just 11. The value for distribution are those defined by
the Disco API, check the documentation for the full list. The value for
archiveType should be either zip or tar.gz.
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:
- platform
-
aix,hpux,os400,linux,linux_musl,osx,freebsd,openbsd,netbsd,sunos,windows,zos. - arch
-
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
Examples:
-
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
<plugin>
<groupId>org.jreleaser</groupId>
<artifactId>jdks-maven-plugin</artifactId>
<version>1.21.0-SNAPSHOT</version>
<configuration>
<pkgs>
<pkg>
<name>zulu11Linux</name>
<platform>linux-x86_64</platform>
<version>11.0.11</version>
</pkg>
<pkg>
<name>zulu11Osx</name>
<platform>osx-x86_64</platform>
<version>11.0.11</version>
</pkg>
<pkg>
<name>zulu11Windows</name>
<platform>windows-x86_64</platform>
<version>11.0.11</version>
</pkg>
</pkgs>
</configuration>
</plugin>
Explicit
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. -
filename: filename of the downloaded package. optional
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:
- platform
-
aix,hpux,os400,linux,linux_musl,osx,freebsd,openbsd,netbsd,sunos,windows,zos. - arch
-
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
Examples:
-
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
<plugin>
<groupId>org.jreleaser</groupId>
<artifactId>jdks-maven-plugin</artifactId>
<version>1.21.0-SNAPSHOT</version>
<configuration>
<jdks>
<jdk>
<name>zulu11Linux</name>
<platform>linux</platform>
<url>https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip</url>
<checksum>9d1718ef74c29a8148b67ddd90bc9267fc1614e0a1eb0f4ea16e234e86419a60</checksum>
</jdk>
<jdk>
<name>zulu11Windows</name>
<platform>windows</platform>
<url>https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip</url>
<checksum>7bcbaedecca73811f70a5ee89e9258afff9bc009286449d97d9b3105f52a1a3a</checksum>
</jdk>
<jdk>
<name>zulu11Osx</name>
<platform>osx</platform>
<url>https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip</url>
<checksum>abc3a9696fb6c10efcf3c5878cdb049244b0ba5dcc7141c6f0f88b99df626d2a</checksum>
</jdk>
</jdks>
</configuration>
</plugin>
Goals
None of the exposed MOJOs are bound to a specific life-cycle phase, letting you decide when and how that should happen in your build.
The following MOJOs are provided:
jdks:setup-disco
Downloads, verifies, and unpacks JDKs using the Foojay Disco API.
Available parameters:
-
connectTimeout (Default: 60)+ Connect timeout (in seconds).
Type: int
User property:"disco.setup.connect.timeout -
outputDirectory (Default: ${project.build.directory}/jdks)
Type: File
User property:jdks.output.directory -
readTimeout (Default: 20)
Read timeout (in seconds).
Type: int
User property:disco.setup.read.timeout -
skip
Skip execution.
Type: boolean
User property:disco.setup.skip -
unpack (default:
true)
Unpack archives.
Type: boolean
User property:disco.setup.unpack
jdks:setup-jdks
Downloads, verifies, and unpacks JDKs.
Available parameters:
-
jdkName
The name of the JDK to be downloaded.
Type: String
User property:jdk.name -
outputDirectory (Default: ${project.build.directory}/jdks)
Type: File
User property:jdks.output.directory -
skip
Skip execution.
Type: boolean
User property:jdks.setup.skip -
unpack (default:
true)
Unpack archives.
Type: boolean
User property:jdks.setup.unpack
Examples
[INFO] --- jdks-maven-plugin:1.21.0-SNAPSHOT:list-disco (default-cli) @ app ---
[INFO] == Pkg zulu11Linux ==
[INFO] version: 11.0.11
[INFO] archiveType: zip
[INFO] platform: linux-x86_64
[INFO] distribution: zulu
[INFO] javafxBundled: false
[INFO] packageType: jdk
[INFO] package(s): 1
[INFO] filename: zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] == Pkg zulu11Osx ==
[INFO] version: 11.0.11
[INFO] archiveType: zip
[INFO] platform: osx-x86_64
[INFO] distribution: zulu
[INFO] javafxBundled: false
[INFO] packageType: jdk
[INFO] package(s): 1
[INFO] filename: zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] == Pkg zulu11Windows ==
[INFO] version: 11.0.11
[INFO] archiveType: zip
[INFO] platform: windows-x86_64
[INFO] distribution: zulu
[INFO] javafxBundled: false
[INFO] packageType: jdk
[INFO] package(s): 1
[INFO] filename: zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] --- jdks-maven-plugin:1.21.0-SNAPSHOT:setup-disco (default-cli) @ app ---
[INFO] Fetching [name='zulu11Linux', version='11.0.11', archiveType='zip', distribution='zulu', platform='linux-x86_64', packageType='jdk', javafxBundled='false']
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] Fetching [name='zulu11Osx', version='11.0.11', archiveType='zip', distribution='zulu', platform='osx-x86_64', packageType='jdk', javafxBundled='false']
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] Fetching [name='zulu11Windows', version='11.0.11', archiveType='zip', distribution='zulu', platform='windows-x86_64', packageType='jdk', javafxBundled='false']
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] --- jdks-maven-plugin:1.21.0-SNAPSHOT:list-jdks (default-cli) @ app ---
[INFO] == JDK zulu11Linux ==
[INFO] url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] checksum: 9d1718ef74c29a8148b67ddd90bc9267fc1614e0a1eb0f4ea16e234e86419a60
[INFO] platform: linux
[INFO]
[INFO] == JDK zulu11Windows ==
[INFO] url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] checksum: 7bcbaedecca73811f70a5ee89e9258afff9bc009286449d97d9b3105f52a1a3a
[INFO] platform: windows
[INFO]
[INFO] == JDK zulu11Osx ==
[INFO] url: https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] checksum: abc3a9696fb6c10efcf3c5878cdb049244b0ba5dcc7141c6f0f88b99df626d2a
[INFO] platform: osx
[INFO] --- jdks-maven-plugin:1.21.0-SNAPSHOT:setup-jdks (default-cli) @ app ---
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] Verifying zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-linux_x64.zip
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] Verifying zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-win_x64.zip
[INFO] Downloading https://cdn.azul.com/zulu/bin/zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] Verifying zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip
[INFO] Extracting zulu11.48.21-ca-jdk11.0.11-macosx_x64.zip