From 2dfa186b60959c1aec08ef44ce7dcef62b0bc418 Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Sat, 1 Mar 2025 12:20:02 +0100 Subject: [PATCH] Reduce our exposure to DefaultArtifactVersion It is quite buggy for now so let's not use it as most of the time it's not necessary. (cherry picked from commit d2f53add0269acfafb49e26ddb5f12213f161590) --- .../maven/ExtensionDescriptorMojo.java | 20 +++++++++++++++---- .../devtools/commands/CreateExtension.java | 4 ++-- .../rewrite/QuarkusUpdatesRepository.java | 12 +++++------ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java b/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java index 27acf1122cb66..b88c611dd176c 100644 --- a/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java +++ b/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java @@ -8,11 +8,18 @@ import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Scm; import org.apache.maven.plugin.AbstractMojo; @@ -550,8 +557,13 @@ private static String toVersionRange(String version) { if (version == null) { return null; } - DefaultArtifactVersion dav = new DefaultArtifactVersion(version); - return "[" + dav.getMajorVersion() + "." + dav.getMinorVersion() + ",)"; + + // we don't use DefaultArtifactVersion here as it doesn't support 4 dotted number parts + // we might get rid of this version scheme but let's make sure we support it just in case + String[] versionItems = version.split("-"); + versionItems = versionItems[0].split("\\."); + + return "[" + versionItems[0] + "." + (versionItems.length > 1 ? versionItems[1] : "0") + ",)"; } private void ensureArtifactCoords(ObjectNode extObject) { diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateExtension.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateExtension.java index 54f7af27da886..1bb377aeee443 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateExtension.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateExtension.java @@ -48,7 +48,7 @@ import javax.lang.model.SourceVersion; import org.apache.commons.lang3.StringUtils; -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.artifact.versioning.ComparableVersion; import org.apache.maven.model.Model; import io.quarkus.devtools.codestarts.extension.QuarkusExtensionCodestartCatalog; @@ -355,7 +355,7 @@ public CreateExtensionCommandHandler prepare() throws QuarkusCommandException { final Optional quarkusVersion = data.getStringValue(QUARKUS_VERSION); // in 2.10.0.CR1 quarkus-bootstrap-maven-plugin was deprecated in favor of quarkus-extension-maven-plugin if (quarkusVersion.isPresent() && - new DefaultArtifactVersion("2.10.0.CR1").compareTo(new DefaultArtifactVersion(quarkusVersion.get())) > 0) { + new ComparableVersion("2.10.0.CR1").compareTo(new ComparableVersion(quarkusVersion.get())) > 0) { // the legacy bootstrap plugin, if MAVEN_QUARKUS_EXTENSION_PLUGIN isn't set, it will default to the quarkus-extension-maven-plugin data.putIfAbsent(MAVEN_QUARKUS_EXTENSION_PLUGIN, "quarkus-bootstrap-maven-plugin"); } diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java index 5bba036379d4b..97462ef690e62 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java @@ -20,7 +20,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.artifact.versioning.ComparableVersion; import org.eclipse.aether.artifact.Artifact; import io.quarkus.bootstrap.resolver.maven.BootstrapMavenException; @@ -173,9 +173,9 @@ public String getRewritePluginVersion() { static boolean shouldApplyRecipe(String recipeFileName, String currentVersion, String targetVersion) { String recipeVersion = VERSION_EXTRACTION_PATTERN.matcher(recipeFileName).replaceFirst(""); - final DefaultArtifactVersion recipeAVersion = new DefaultArtifactVersion(recipeVersion); - final DefaultArtifactVersion currentAVersion = new DefaultArtifactVersion(currentVersion); - final DefaultArtifactVersion targetAVersion = new DefaultArtifactVersion(targetVersion); + final ComparableVersion recipeAVersion = new ComparableVersion(recipeVersion); + final ComparableVersion currentAVersion = new ComparableVersion(currentVersion); + final ComparableVersion targetAVersion = new ComparableVersion(targetVersion); return currentAVersion.compareTo(recipeAVersion) < 0 && targetAVersion.compareTo(recipeAVersion) >= 0; } @@ -276,9 +276,9 @@ private static class RecipeVersionComparator implements Comparator { @Override public int compare(Path recipePath1, Path recipePath2) { - DefaultArtifactVersion recipeVersion1 = new DefaultArtifactVersion( + ComparableVersion recipeVersion1 = new ComparableVersion( VERSION_EXTRACTION_PATTERN.matcher(recipePath1.getFileName().toString()).replaceFirst("")); - DefaultArtifactVersion recipeVersion2 = new DefaultArtifactVersion( + ComparableVersion recipeVersion2 = new ComparableVersion( VERSION_EXTRACTION_PATTERN.matcher(recipePath2.getFileName().toString()).replaceFirst("")); return recipeVersion1.compareTo(recipeVersion2);