Skip to content

Commit 10d950e

Browse files
committed
Use native Disco API distribution names for JDK management
- Add jdkDistribution and toolchainJdkDistribution parameters using native Disco API names - Remove vendor mapping complexity in favor of direct distribution names - Add comprehensive distribution validation with helpful error messages - Support 34+ JDK distributions through Foojay Disco API - Default to 'temurin' distribution when not specified - Update Maven plugin to use distribution parameters directly - Clean implementation without legacy vendor compatibility layer Supported distributions include: - Popular: temurin, corretto, zulu, liberica, oracle_open_jdk, microsoft, semeru - Specialized: graalvm_ce11, graalvm_ce17, sap_machine, dragonwell, jetbrains, bisheng, kona, mandrel - Complete list: https://api.foojay.io/disco/v3.0/distributions Benefits: - Native Disco API integration without mapping overhead - Better error messages showing all available distributions - Validation prevents configuration errors - Cleaner, more maintainable codebase - Direct access to 34+ JDK distributions
1 parent 91f28bc commit 10d950e

File tree

4 files changed

+19
-190
lines changed

4 files changed

+19
-190
lines changed

maven-wrapper-distribution/src/resources/only-mvnw

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -124,32 +124,6 @@ validate_distribution() {
124124
}
125125

126126
# Display available distributions
127-
# Get the effective distribution, preferring jdkDistribution over jdkVendor for backward compatibility
128-
get_effective_distribution() {
129-
distribution_param="$1"
130-
vendor_param="$2"
131-
132-
# If new distribution parameter is set, use it
133-
if [ -n "$distribution_param" ]; then
134-
echo "$distribution_param"
135-
return
136-
fi
137-
138-
# Otherwise, map legacy vendor to distribution for backward compatibility
139-
case "${vendor_param:-temurin}" in
140-
temurin | adoptium | adoptopenjdk | eclipse) echo "temurin" ;;
141-
corretto | amazon | aws) echo "corretto" ;;
142-
zulu | azul) echo "zulu" ;;
143-
liberica | bellsoft) echo "liberica" ;;
144-
oracle) echo "oracle_open_jdk" ;;
145-
microsoft | ms) echo "microsoft" ;;
146-
semeru | ibm) echo "semeru" ;;
147-
graalvm | graal) echo "graalvm_ce11" ;;
148-
sapmachine | sap) echo "sap_machine" ;;
149-
dragonwell | alibaba) echo "dragonwell" ;;
150-
*) echo "temurin" ;;
151-
esac
152-
}
153127

154128
show_available_distributions() {
155129
echo "Available JDK distributions:" >&2
@@ -413,13 +387,11 @@ trim() {
413387

414388
# Initialize JDK-related variables with empty defaults
415389
jdkVersion=""
416-
jdkVendor=""
417390
jdkDistribution=""
418391
jdkDistributionUrl=""
419392
jdkSha256Sum=""
420393
alwaysDownloadJdk=""
421394
toolchainJdkVersion=""
422-
toolchainJdkVendor=""
423395
toolchainJdkDistribution=""
424396
toolchainJdkDistributionUrl=""
425397
toolchainJdkSha256Sum=""
@@ -434,13 +406,11 @@ while IFS="=" read -r key value; do
434406
distributionUrl) distributionUrl=$(trim "${value-}") ;;
435407
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
436408
jdkVersion) jdkVersion=$(trim "${value-}") ;;
437-
jdkVendor) jdkVendor=$(trim "${value-}") ;;
438409
jdkDistribution) jdkDistribution=$(trim "${value-}") ;;
439410
jdkDistributionUrl) jdkDistributionUrl=$(trim "${value-}") ;;
440411
jdkSha256Sum) jdkSha256Sum=$(trim "${value-}") ;;
441412
alwaysDownloadJdk) alwaysDownloadJdk=$(trim "${value-}") ;;
442413
toolchainJdkVersion) toolchainJdkVersion=$(trim "${value-}") ;;
443-
toolchainJdkVendor) toolchainJdkVendor=$(trim "${value-}") ;;
444414
toolchainJdkDistribution) toolchainJdkDistribution=$(trim "${value-}") ;;
445415
toolchainJdkDistributionUrl) toolchainJdkDistributionUrl=$(trim "${value-}") ;;
446416
toolchainJdkSha256Sum) toolchainJdkSha256Sum=$(trim "${value-}") ;;
@@ -641,14 +611,12 @@ exec_maven() {
641611
}
642612

643613
# Install JDK if configured
644-
effective_jdk_distribution="$(get_effective_distribution "$jdkDistribution" "$jdkVendor")"
645-
install_jdk "$jdkVersion" "$effective_jdk_distribution" "$jdkDistributionUrl" "$jdkSha256Sum" "$alwaysDownloadJdk"
614+
install_jdk "$jdkVersion" "${jdkDistribution:-temurin}" "$jdkDistributionUrl" "$jdkSha256Sum" "$alwaysDownloadJdk"
646615

647616
# Install toolchain JDK if configured (basic support - just download, no toolchains.xml update in script mode)
648617
if [ -n "$toolchainJdkVersion" ]; then
649618
verbose "Installing toolchain JDK $toolchainJdkVersion"
650-
effective_toolchain_jdk_distribution="$(get_effective_distribution "$toolchainJdkDistribution" "$toolchainJdkVendor")"
651-
install_jdk "$toolchainJdkVersion" "$effective_toolchain_jdk_distribution" "$toolchainJdkDistributionUrl" "$toolchainJdkSha256Sum" "$alwaysDownloadJdk"
619+
install_jdk "$toolchainJdkVersion" "${toolchainJdkDistribution:-temurin}" "$toolchainJdkDistributionUrl" "$toolchainJdkSha256Sum" "$alwaysDownloadJdk"
652620
fi
653621

654622
if [ -d "$MAVEN_HOME" ]; then

maven-wrapper-distribution/src/resources/only-mvnw.cmd

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -59,44 +59,18 @@ if (!$distributionUrl) {
5959

6060
# Read JDK-related properties
6161
$jdkVersion = $wrapperProperties.jdkVersion
62-
$jdkVendor = $wrapperProperties.jdkVendor
6362
$jdkDistribution = $wrapperProperties.jdkDistribution
6463
$jdkDistributionUrl = $wrapperProperties.jdkDistributionUrl
6564
$jdkSha256Sum = $wrapperProperties.jdkSha256Sum
6665
$alwaysDownloadJdk = $wrapperProperties.alwaysDownloadJdk
6766
$toolchainJdkVersion = $wrapperProperties.toolchainJdkVersion
68-
$toolchainJdkVendor = $wrapperProperties.toolchainJdkVendor
6967
$toolchainJdkDistribution = $wrapperProperties.toolchainJdkDistribution
7068
$toolchainJdkDistributionUrl = $wrapperProperties.toolchainJdkDistributionUrl
7169
$toolchainJdkSha256Sum = $wrapperProperties.toolchainJdkSha256Sum
7270

73-
# Function to get effective distribution (prefer new distribution over legacy vendor)
74-
function Get-EffectiveDistribution {
75-
param(
76-
[string]$Distribution,
77-
[string]$Vendor
78-
)
79-
80-
# If new distribution parameter is set, use it
81-
if ($Distribution -and $Distribution.Trim() -ne "") {
82-
return $Distribution.Trim()
83-
}
84-
85-
# Otherwise, map legacy vendor to distribution for backward compatibility
86-
switch ($Vendor.ToLower()) {
87-
{ $_ -in @("temurin", "adoptium", "adoptopenjdk", "eclipse") } { return "temurin" }
88-
{ $_ -in @("corretto", "amazon", "aws") } { return "corretto" }
89-
{ $_ -in @("zulu", "azul") } { return "zulu" }
90-
{ $_ -in @("liberica", "bellsoft") } { return "liberica" }
91-
"oracle" { return "oracle_open_jdk" }
92-
{ $_ -in @("microsoft", "ms") } { return "microsoft" }
93-
{ $_ -in @("semeru", "ibm") } { return "semeru" }
94-
{ $_ -in @("graalvm", "graal") } { return "graalvm_ce11" }
95-
{ $_ -in @("sapmachine", "sap") } { return "sap_machine" }
96-
{ $_ -in @("dragonwell", "alibaba") } { return "dragonwell" }
97-
default { return "temurin" }
98-
}
99-
}
71+
# Set default distribution if not specified
72+
if (-not $jdkDistribution) { $jdkDistribution = "temurin" }
73+
if (-not $toolchainJdkDistribution) { $toolchainJdkDistribution = "temurin" }
10074

10175
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
10276
"maven-mvnd-*" {
@@ -423,14 +397,12 @@ function Install-JDK {
423397
}
424398

425399
# Install JDK if configured
426-
$effectiveJdkDistribution = Get-EffectiveDistribution -Distribution $jdkDistribution -Vendor $jdkVendor
427-
Install-JDK -Version $jdkVersion -Distribution $effectiveJdkDistribution -Url $jdkDistributionUrl -Checksum $jdkSha256Sum -AlwaysDownload $alwaysDownloadJdk
400+
Install-JDK -Version $jdkVersion -Distribution $jdkDistribution -Url $jdkDistributionUrl -Checksum $jdkSha256Sum -AlwaysDownload $alwaysDownloadJdk
428401

429402
# Install toolchain JDK if configured
430403
if ($toolchainJdkVersion) {
431404
Write-Verbose "Installing toolchain JDK $toolchainJdkVersion"
432-
$effectiveToolchainJdkDistribution = Get-EffectiveDistribution -Distribution $toolchainJdkDistribution -Vendor $toolchainJdkVendor
433-
Install-JDK -Version $toolchainJdkVersion -Distribution $effectiveToolchainJdkDistribution -Url $toolchainJdkDistributionUrl -Checksum $toolchainJdkSha256Sum -AlwaysDownload $alwaysDownloadJdk
405+
Install-JDK -Version $toolchainJdkVersion -Distribution $toolchainJdkDistribution -Url $toolchainJdkDistributionUrl -Checksum $toolchainJdkSha256Sum -AlwaysDownload $alwaysDownloadJdk
434406
}
435407

436408
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {

maven-wrapper-plugin/src/main/java/org/apache/maven/plugins/wrapper/WrapperMojo.java

Lines changed: 10 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -165,20 +165,12 @@ public class WrapperMojo extends AbstractMojo {
165165
@Parameter(property = "jdk")
166166
private String jdkVersion;
167167

168-
/**
169-
* The vendor of JDK to download. Supported vendors: temurin, corretto, zulu, liberica, oracle, graalvm.
170-
* Default is temurin.
171-
* @deprecated Use jdkDistribution instead for native Disco API distribution names
172-
*/
173-
@Parameter(property = "jdkVendor", defaultValue = "temurin")
174-
private String jdkVendor;
175-
176168
/**
177169
* The distribution of JDK to download using native Disco API names.
178170
* Supported distributions: temurin, corretto, zulu, liberica, oracle_open_jdk, microsoft, semeru, graalvm_ce11, etc.
179-
* Default is temurin. If specified, takes precedence over jdkVendor.
171+
* Default is temurin.
180172
*/
181-
@Parameter(property = "jdkDistribution")
173+
@Parameter(property = "jdkDistribution", defaultValue = "temurin")
182174
private String jdkDistribution;
183175

184176
/**
@@ -195,20 +187,12 @@ public class WrapperMojo extends AbstractMojo {
195187
@Parameter(property = "toolchainJdk")
196188
private String toolchainJdkVersion;
197189

198-
/**
199-
* The vendor of JDK to download for toolchains. Supported vendors: temurin, corretto, zulu, liberica, oracle, graalvm.
200-
* Default is temurin.
201-
* @deprecated Use toolchainJdkDistribution instead for native Disco API distribution names
202-
*/
203-
@Parameter(property = "toolchainJdkVendor", defaultValue = "temurin")
204-
private String toolchainJdkVendor;
205-
206190
/**
207191
* The distribution of JDK to download for toolchains using native Disco API names.
208192
* Supported distributions: temurin, corretto, zulu, liberica, oracle_open_jdk, microsoft, semeru, graalvm_ce11, etc.
209-
* Default is temurin. If specified, takes precedence over toolchainJdkVendor.
193+
* Default is temurin.
210194
*/
211-
@Parameter(property = "toolchainJdkDistribution")
195+
@Parameter(property = "toolchainJdkDistribution", defaultValue = "temurin")
212196
private String toolchainJdkDistribution;
213197

214198
/**
@@ -443,21 +427,17 @@ private void replaceProperties(String wrapperVersion, Path targetFolder) throws
443427
if (jdkVersion != null) {
444428
out.append("jdkVersion=" + jdkVersion + System.lineSeparator());
445429
}
446-
// Use the effective distribution (new parameter takes precedence over legacy vendor)
447-
String effectiveJdkDistribution = getEffectiveJdkDistribution();
448-
if (effectiveJdkDistribution != null) {
449-
out.append("jdkDistribution=" + effectiveJdkDistribution + System.lineSeparator());
430+
if (jdkDistribution != null) {
431+
out.append("jdkDistribution=" + jdkDistribution + System.lineSeparator());
450432
}
451433
if (jdkDistributionUrl != null) {
452434
out.append("jdkDistributionUrl=" + jdkDistributionUrl + System.lineSeparator());
453435
}
454436
if (toolchainJdkVersion != null) {
455437
out.append("toolchainJdkVersion=" + toolchainJdkVersion + System.lineSeparator());
456438
}
457-
// Use the effective toolchain distribution (new parameter takes precedence over legacy vendor)
458-
String effectiveToolchainJdkDistribution = getEffectiveToolchainJdkDistribution();
459-
if (effectiveToolchainJdkDistribution != null) {
460-
out.append("toolchainJdkDistribution=" + effectiveToolchainJdkDistribution + System.lineSeparator());
439+
if (toolchainJdkDistribution != null) {
440+
out.append("toolchainJdkDistribution=" + toolchainJdkDistribution + System.lineSeparator());
461441
}
462442
if (toolchainJdkDistributionUrl != null) {
463443
out.append("toolchainJdkDistributionUrl=" + toolchainJdkDistributionUrl + System.lineSeparator());
@@ -537,89 +517,19 @@ protected String determineRepoUrl(String envRepoUrl, Settings settings) {
537517
return DEFAULT_REPOURL;
538518
}
539519

540-
/**
541-
* Get the effective JDK distribution name, preferring jdkDistribution over jdkVendor.
542-
* Maps legacy vendor names to Disco API distribution names for backward compatibility.
543-
*/
544-
private String getEffectiveJdkDistribution() {
545-
if (jdkDistribution != null && !jdkDistribution.trim().isEmpty()) {
546-
return jdkDistribution.trim();
547-
}
548-
// Map legacy vendor names to Disco distribution names for backward compatibility
549-
return mapVendorToDistribution(jdkVendor);
550-
}
551-
552-
/**
553-
* Get the effective toolchain JDK distribution name, preferring toolchainJdkDistribution over toolchainJdkVendor.
554-
* Maps legacy vendor names to Disco API distribution names for backward compatibility.
555-
*/
556-
private String getEffectiveToolchainJdkDistribution() {
557-
if (toolchainJdkDistribution != null && !toolchainJdkDistribution.trim().isEmpty()) {
558-
return toolchainJdkDistribution.trim();
559-
}
560-
// Map legacy vendor names to Disco distribution names for backward compatibility
561-
return mapVendorToDistribution(toolchainJdkVendor);
562-
}
563-
564-
/**
565-
* Map legacy vendor names to Disco API distribution names for backward compatibility.
566-
*/
567-
private String mapVendorToDistribution(String vendor) {
568-
if (vendor == null) {
569-
return "temurin";
570-
}
571-
switch (vendor.toLowerCase()) {
572-
case "temurin":
573-
case "adoptium":
574-
case "adoptopenjdk":
575-
case "eclipse":
576-
return "temurin";
577-
case "corretto":
578-
case "amazon":
579-
case "aws":
580-
return "corretto";
581-
case "zulu":
582-
case "azul":
583-
return "zulu";
584-
case "liberica":
585-
case "bellsoft":
586-
return "liberica";
587-
case "oracle":
588-
return "oracle_open_jdk";
589-
case "microsoft":
590-
case "ms":
591-
return "microsoft";
592-
case "semeru":
593-
case "ibm":
594-
return "semeru";
595-
case "graalvm":
596-
case "graal":
597-
return "graalvm_ce11";
598-
case "sapmachine":
599-
case "sap":
600-
return "sap_machine";
601-
case "dragonwell":
602-
case "alibaba":
603-
return "dragonwell";
604-
default:
605-
return "temurin";
606-
}
607-
}
608-
609520
private void showJdkVersionWarnings() {
610521
boolean warningsShown = false;
611522

612523
// Check main JDK version
613524
if (jdkVersion != null && jdkDistributionUrl == null) {
614-
if (checkJdkVersionStability("Main JDK", jdkVersion, getEffectiveJdkDistribution())) {
525+
if (checkJdkVersionStability("Main JDK", jdkVersion, jdkDistribution)) {
615526
warningsShown = true;
616527
}
617528
}
618529

619530
// Check toolchain JDK version
620531
if (toolchainJdkVersion != null && toolchainJdkDistributionUrl == null) {
621-
if (checkJdkVersionStability(
622-
"Toolchain JDK", toolchainJdkVersion, getEffectiveToolchainJdkDistribution())) {
532+
if (checkJdkVersionStability("Toolchain JDK", toolchainJdkVersion, toolchainJdkDistribution)) {
623533
warningsShown = true;
624534
}
625535
}

src/site/markdown/JDK_MANAGEMENT.md

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,7 @@ Add JDK configuration to your `.mvn/wrapper/maven-wrapper.properties` file:
5151
```properties
5252
# JDK Management
5353
jdkVersion=17 # Resolves to latest 17.x (e.g., 17.0.14)
54-
jdkDistribution=temurin # Native Disco API distribution name
55-
56-
# Legacy (deprecated): Use jdkDistribution instead
57-
# jdkVendor=temurin
54+
jdkDistribution=temurin # Disco API distribution name
5855

5956
# Optional: Update policy (Maven-style)
6057
jdkUpdatePolicy=daily # never, daily, always, interval:X
@@ -76,10 +73,7 @@ For multi-JDK builds using Maven toolchains:
7673
```properties
7774
# Toolchain JDK (automatically added to toolchains.xml)
7875
toolchainJdkVersion=11
79-
toolchainJdkDistribution=temurin # Native Disco API distribution name
80-
81-
# Legacy (deprecated): Use toolchainJdkDistribution instead
82-
# toolchainJdkVendor=temurin
76+
toolchainJdkDistribution=temurin # Disco API distribution name
8377

8478
# Optional: Direct URL (overrides version/distribution resolution)
8579
toolchainJdkDistributionUrl=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.19%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.19_7.tar.gz
@@ -161,21 +155,6 @@ The Maven Wrapper supports 34+ JDK distributions through the Foojay Disco API us
161155

162156
**Complete List**: For all 34+ supported distributions, see: https://api.foojay.io/disco/v3.0/distributions
163157

164-
### Legacy Vendor Names (Deprecated)
165-
166-
For backward compatibility, legacy vendor names are still supported but deprecated:
167-
168-
| Legacy Vendor | Maps to Distribution | Migration |
169-
|---------------|---------------------|-----------|
170-
| `temurin`, `adoptium`, `adoptopenjdk`, `eclipse` | `temurin` | Use `jdkDistribution=temurin` |
171-
| `corretto`, `amazon`, `aws` | `corretto` | Use `jdkDistribution=corretto` |
172-
| `zulu`, `azul` | `zulu` | Use `jdkDistribution=zulu` |
173-
| `liberica`, `bellsoft` | `liberica` | Use `jdkDistribution=liberica` |
174-
| `oracle` | `oracle_open_jdk` | Use `jdkDistribution=oracle_open_jdk` |
175-
| `microsoft`, `ms` | `microsoft` | Use `jdkDistribution=microsoft` |
176-
| `semeru`, `ibm` | `semeru` | Use `jdkDistribution=semeru` |
177-
| `graalvm`, `graal` | `graalvm_ce11` | Use `jdkDistribution=graalvm_ce11` |
178-
179158
## JDK Version Formats
180159

181160
You can specify JDK versions in several formats:

0 commit comments

Comments
 (0)