mirror of https://github.com/apache/maven.git
o Aligned version resolver with prefix resolver and made it support a model as additional input
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@927604 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
51d640d13b
commit
5507063fc2
|
@ -26,6 +26,7 @@ import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
|
||||||
import org.apache.maven.artifact.repository.RepositoryCache;
|
import org.apache.maven.artifact.repository.RepositoryCache;
|
||||||
import org.apache.maven.artifact.repository.RepositoryRequest;
|
import org.apache.maven.artifact.repository.RepositoryRequest;
|
||||||
import org.apache.maven.execution.MavenSession;
|
import org.apache.maven.execution.MavenSession;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
import org.apache.maven.model.Plugin;
|
import org.apache.maven.model.Plugin;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.repository.ArtifactTransferListener;
|
import org.apache.maven.repository.ArtifactTransferListener;
|
||||||
|
@ -43,6 +44,8 @@ public class DefaultPluginVersionRequest
|
||||||
|
|
||||||
private String artifactId;
|
private String artifactId;
|
||||||
|
|
||||||
|
private Model pom;
|
||||||
|
|
||||||
private RepositoryRequest repositoryRequest;
|
private RepositoryRequest repositoryRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,6 +129,18 @@ public class DefaultPluginVersionRequest
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Model getPom()
|
||||||
|
{
|
||||||
|
return pom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefaultPluginVersionRequest setPom( Model pom )
|
||||||
|
{
|
||||||
|
this.pom = pom;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public RepositoryCache getCache()
|
public RepositoryCache getCache()
|
||||||
{
|
{
|
||||||
return repositoryRequest.getCache();
|
return repositoryRequest.getCache();
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.RepositoryCache;
|
import org.apache.maven.artifact.repository.RepositoryCache;
|
||||||
import org.apache.maven.artifact.repository.RepositoryRequest;
|
import org.apache.maven.artifact.repository.RepositoryRequest;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
import org.apache.maven.repository.ArtifactTransferListener;
|
import org.apache.maven.repository.ArtifactTransferListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,6 +66,23 @@ public interface PluginVersionRequest
|
||||||
*/
|
*/
|
||||||
PluginVersionRequest setArtifactId( String artifactId );
|
PluginVersionRequest setArtifactId( String artifactId );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the POM whose build plugins are to be scanned for the version.
|
||||||
|
*
|
||||||
|
* @return The POM whose build plugins are to be scanned for the verion or {@code null} to only search the plugin
|
||||||
|
* repositories.
|
||||||
|
*/
|
||||||
|
Model getPom();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the POM whose build plugins are to be scanned for the version.
|
||||||
|
*
|
||||||
|
* @param pom The POM whose build plugins are to be scanned for the version, may be {@code null} to only search the
|
||||||
|
* plugin repositories.
|
||||||
|
* @return This request, never {@code null}.
|
||||||
|
*/
|
||||||
|
PluginVersionRequest setPom( Model pom );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether network access to remote repositories has been disabled.
|
* Indicates whether network access to remote repositories has been disabled.
|
||||||
*
|
*
|
||||||
|
|
|
@ -22,11 +22,14 @@ package org.apache.maven.plugin.version.internal;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.metadata.Metadata;
|
import org.apache.maven.artifact.repository.metadata.Metadata;
|
||||||
import org.apache.maven.artifact.repository.metadata.io.MetadataReader;
|
import org.apache.maven.artifact.repository.metadata.io.MetadataReader;
|
||||||
|
import org.apache.maven.model.Build;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
import org.apache.maven.plugin.version.PluginVersionRequest;
|
import org.apache.maven.plugin.version.PluginVersionRequest;
|
||||||
import org.apache.maven.plugin.version.PluginVersionResolutionException;
|
import org.apache.maven.plugin.version.PluginVersionResolutionException;
|
||||||
import org.apache.maven.plugin.version.PluginVersionResolver;
|
import org.apache.maven.plugin.version.PluginVersionResolver;
|
||||||
|
@ -63,6 +66,38 @@ public class DefaultPluginVersionResolver
|
||||||
{
|
{
|
||||||
logger.debug( "Resolving plugin version for " + request.getGroupId() + ":" + request.getArtifactId() );
|
logger.debug( "Resolving plugin version for " + request.getGroupId() + ":" + request.getArtifactId() );
|
||||||
|
|
||||||
|
PluginVersionResult result = resolveFromProject( request );
|
||||||
|
|
||||||
|
if ( result == null )
|
||||||
|
{
|
||||||
|
result = resolveFromRepository( request );
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( result.getVersion() ) )
|
||||||
|
{
|
||||||
|
throw new PluginVersionResolutionException( request.getGroupId(), request.getArtifactId(),
|
||||||
|
request.getLocalRepository(),
|
||||||
|
request.getRemoteRepositories(),
|
||||||
|
"Plugin not found in any plugin repository" );
|
||||||
|
}
|
||||||
|
else if ( logger.isDebugEnabled() )
|
||||||
|
{
|
||||||
|
logger.debug( "Resolved plugin version for " + request.getGroupId() + ":" + request.getArtifactId()
|
||||||
|
+ " to " + result.getVersion() + " from repository "
|
||||||
|
+ ( result.getRepository() != null ? result.getRepository().getId() : "null" ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( logger.isDebugEnabled() )
|
||||||
|
{
|
||||||
|
logger.debug( "Resolved plugin version for " + request.getGroupId() + ":" + request.getArtifactId()
|
||||||
|
+ " to " + result.getVersion() + " from POM " + request.getPom() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PluginVersionResult resolveFromRepository( PluginVersionRequest request )
|
||||||
|
throws PluginVersionResolutionException
|
||||||
|
{
|
||||||
DefaultPluginVersionResult result = new DefaultPluginVersionResult();
|
DefaultPluginVersionResult result = new DefaultPluginVersionResult();
|
||||||
|
|
||||||
Metadata mergedMetadata = new Metadata();
|
Metadata mergedMetadata = new Metadata();
|
||||||
|
@ -155,13 +190,6 @@ public class DefaultPluginVersionResolver
|
||||||
"Plugin not found in any plugin repository" );
|
"Plugin not found in any plugin repository" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( logger.isDebugEnabled() )
|
|
||||||
{
|
|
||||||
logger.debug( "Resolved plugin version for " + request.getGroupId() + ":" + request.getArtifactId()
|
|
||||||
+ " to " + result.getVersion() + " from repository "
|
|
||||||
+ ( result.getRepository() != null ? result.getRepository().getId() : "null" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,4 +237,43 @@ public class DefaultPluginVersionResolver
|
||||||
return target.merge( source );
|
return target.merge( source );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PluginVersionResult resolveFromProject( PluginVersionRequest request )
|
||||||
|
{
|
||||||
|
PluginVersionResult result = null;
|
||||||
|
|
||||||
|
if ( request.getPom() != null && request.getPom().getBuild() != null )
|
||||||
|
{
|
||||||
|
Build build = request.getPom().getBuild();
|
||||||
|
|
||||||
|
result = resolveFromProject( request, build.getPlugins() );
|
||||||
|
|
||||||
|
if ( result == null && build.getPluginManagement() != null )
|
||||||
|
{
|
||||||
|
result = resolveFromProject( request, build.getPluginManagement().getPlugins() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PluginVersionResult resolveFromProject( PluginVersionRequest request, List<Plugin> plugins )
|
||||||
|
{
|
||||||
|
for ( Plugin plugin : plugins )
|
||||||
|
{
|
||||||
|
if ( request.getGroupId().equals( plugin.getGroupId() )
|
||||||
|
&& request.getArtifactId().equals( plugin.getArtifactId() ) )
|
||||||
|
{
|
||||||
|
if ( plugin.getVersion() != null )
|
||||||
|
{
|
||||||
|
return new DefaultPluginVersionResult( plugin.getVersion() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,16 @@ class DefaultPluginVersionResult
|
||||||
|
|
||||||
private ArtifactRepository repository;
|
private ArtifactRepository repository;
|
||||||
|
|
||||||
|
public DefaultPluginVersionResult()
|
||||||
|
{
|
||||||
|
// does nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public DefaultPluginVersionResult( String version )
|
||||||
|
{
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
public String getVersion()
|
public String getVersion()
|
||||||
{
|
{
|
||||||
return version;
|
return version;
|
||||||
|
|
Loading…
Reference in New Issue