public void doExecute()

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 );
    }