提交 0943a3aa 编写于 作者: C Christoph Kutzinski

Use utility methods for Maven version comparisons

上级 796918da
......@@ -660,7 +660,7 @@ public class MavenBuild extends AbstractMavenBuild<MavenModule,MavenBuild> {
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(
......
......@@ -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;
}
}
......@@ -701,8 +701,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
ProcessCache.MavenProcess process = null;
boolean maven3orLater = MavenUtil.maven3orLater( mavenVersion );
boolean maven3orLater = mavenBuildInformation.isMaven3OrLater();
if ( maven3orLater )
{
LOGGER.fine( "using maven 3 " + mavenVersion );
......@@ -1190,7 +1189,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
// FIXME handle 3.1 level when version will be here : no rush :-)
// or made something configurable tru the ui ?
ReactorReader reactorReader = null;
boolean maven3OrLater = new ComparableVersion (mavenVersion).compareTo( new ComparableVersion ("3.0") ) >= 0;
boolean maven3OrLater = MavenUtil.maven3orLater(mavenVersion);
if (maven3OrLater) {
mavenEmbedderRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
} else {
......
......@@ -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;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册