in src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java [87:142]
public void doExecute()
{
VersionRange versionRange;
try
{
versionRange = VersionRange.createFromVersionSpec( version );
}
catch ( InvalidVersionSpecificationException e )
{
throw new BuildException( "Unable to get extension '"
+ ArtifactUtils.versionlessKey( groupId, artifactId ) + "' because version '"
+ version + " is invalid: " + e.getMessage(), e );
}
ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
Artifact providerArtifact = factory.createExtensionArtifact( groupId, artifactId, versionRange );
log( "Installing provider: " + providerArtifact );
ArtifactResolutionResult result;
try
{
MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( ArtifactMetadataSource.ROLE );
ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
List<ArtifactRepository> remoteRepositories = createRemoteArtifactRepositories();
result = resolver.resolveTransitively( Collections.singleton( providerArtifact ),
createDummyArtifact(), createLocalArtifactRepository(),
remoteRepositories, metadataSource, null );
}
catch ( ArtifactResolutionException e )
{
throw new BuildException( "Error downloading wagon provider from the remote repository: " + e.getMessage(),
e );
}
catch ( ArtifactNotFoundException e )
{
throw new BuildException( "Unable to locate wagon provider in remote repository: " + e.getMessage(), e );
}
try
{
for ( Iterator<Artifact> i = result.getArtifacts().iterator(); i.hasNext(); )
{
Artifact a = i.next();
getContainer().addJarResource( a.getFile() );
}
}
catch ( PlexusContainerException e )
{
throw new BuildException( "Unable to locate wagon provider in remote repository", e );
}
log( "Protocols now supported: " + getSupportedProtocolsAsString(), Project.MSG_VERBOSE );
}