From 0943a3aafa34a9e602eb98f982e46f1bd83dbb28 Mon Sep 17 00:00:00 2001 From: Christoph Kutzinski Date: Fri, 18 Nov 2011 13:42:05 +0100 Subject: [PATCH] Use utility methods for Maven version comparisons --- .../main/java/hudson/maven/MavenBuild.java | 2 +- .../hudson/maven/MavenBuildInformation.java | 28 +++++++++++++++++++ .../hudson/maven/MavenModuleSetBuild.java | 5 ++-- .../maven/reporters/MavenFingerprinter.java | 27 +++++++++--------- 4 files changed, 44 insertions(+), 18 deletions(-) diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java index 8a0013f462..6d759d7d61 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenBuild.java @@ -660,7 +660,7 @@ public class MavenBuild extends AbstractMavenBuild { LOGGER.fine(getFullDisplayName()+" is building with mavenVersion " + mavenVersion + " from file " + mavenInformation.getVersionResourcePath()); - boolean maven3orLater = new ComparableVersion(mavenVersion).compareTo( new ComparableVersion ("3.0") ) >= 0; + boolean maven3orLater = MavenUtil.maven3orLater(mavenVersion); ProcessCache.MavenProcess process = MavenBuild.mavenProcessCache.get( launcher.getChannel(), listener, maven3orLater ? new Maven3ProcessFactory( diff --git a/maven-plugin/src/main/java/hudson/maven/MavenBuildInformation.java b/maven-plugin/src/main/java/hudson/maven/MavenBuildInformation.java index 654a916149..cd631dd90f 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenBuildInformation.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenBuildInformation.java @@ -22,6 +22,9 @@ package hudson.maven; import java.io.Serializable; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.artifact.versioning.ComparableVersion; + /** * @author Olivier Lamy * @since 1.392 @@ -39,4 +42,29 @@ public class MavenBuildInformation implements Serializable { { return mavenVersion; } + + /** + * @since 1.441 + */ + public boolean isMaven3OrLater() { + return MavenUtil.maven3orLater(mavenVersion); + } + + /** + * Returns if this maven version is at least 'version'. + * @param version the version to compare against + * + * @since 1.441 + */ + public boolean isAtLeastMavenVersion(String version) { + if (StringUtils.isBlank(mavenVersion)) { + return false; + } + return new ComparableVersion(mavenVersion).compareTo(new ComparableVersion(version)) >= 0; + } + + @Override + public String toString() { + return mavenVersion; + } } diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java index d1c5f07119..545fedf48b 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java @@ -701,8 +701,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild= 0; + boolean maven3OrLater = MavenUtil.maven3orLater(mavenVersion); if (maven3OrLater) { mavenEmbedderRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 ); } else { diff --git a/maven-plugin/src/main/java/hudson/maven/reporters/MavenFingerprinter.java b/maven-plugin/src/main/java/hudson/maven/reporters/MavenFingerprinter.java index 4b62e93766..897f3aeb37 100644 --- a/maven-plugin/src/main/java/hudson/maven/reporters/MavenFingerprinter.java +++ b/maven-plugin/src/main/java/hudson/maven/reporters/MavenFingerprinter.java @@ -26,6 +26,7 @@ package hudson.maven.reporters; import hudson.Extension; import hudson.FilePath; import hudson.maven.MavenBuild; +import hudson.maven.MavenBuildInformation; import hudson.maven.MavenBuildProxy; import hudson.maven.MavenBuildProxy.BuildCallable; import hudson.maven.MavenModule; @@ -142,11 +143,9 @@ public class MavenFingerprinter extends MavenReporter { File parentFile = parent.getFile(); if (parentFile == null) { - String mavenVersion = build.getMavenBuildInformation().getMavenVersion(); - // Parent artifact contains no actual file, so we resolve against // the local repository - ArtifactRepository localRepository = getLocalRepository(mavenVersion, parent, pom); + ArtifactRepository localRepository = getLocalRepository(build.getMavenBuildInformation(), parent, pom); if (localRepository != null) { Artifact parentArtifact = getArtifact(parent); // Don't use ArtifactRepository.find(), for compatibility with Maven 2.x @@ -179,18 +178,18 @@ public class MavenFingerprinter extends MavenReporter { return art; } - private ArtifactRepository getLocalRepository(String mavenVersion, MavenProject parent, MavenProject pom) { - if (mavenVersion.startsWith("2.0") || mavenVersion.startsWith("2.1")) { - // Maven 2.0 has no corresponding mechanism - return null; - } else if (mavenVersion.startsWith("2.2")) { - // principally this should also work with Maven 2.1, but it's not tested, so err on the safe side - return getArtifactRepositoryMaven21(pom); - } else if (mavenVersion.startsWith("3.") || mavenVersion.startsWith("4.") /* who knows? ;) */) { - return parent.getProjectBuildingRequest() - .getLocalRepository(); + private ArtifactRepository getLocalRepository(MavenBuildInformation mavenBuildInformation, MavenProject parent, MavenProject pom) { + + if (mavenBuildInformation.isMaven3OrLater()) { + return parent.getProjectBuildingRequest().getLocalRepository(); + } else if (mavenBuildInformation.isAtLeastMavenVersion("2.2")) { + // principally this should also work with Maven 2.1, but it's not tested, so err on the safe side + return getArtifactRepositoryMaven21(pom); + } else if (mavenBuildInformation.isAtLeastMavenVersion("2.0")) { + // Maven 2.0 has no corresponding mechanism + return null; } else { - LOGGER.warning("Unknown Maven version: "+mavenVersion); + LOGGER.warning("Unknown Maven version: "+mavenBuildInformation.getMavenVersion()); return null; } } -- GitLab