diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 416debc7a4..5d1b726da3 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -509,7 +509,7 @@ private void resolveParameters( Settings settings ) wagonManager.addAuthenticationInfo( server.getId(), server.getUsername(), server.getPassword(), server.getPrivateKey(), server.getPassphrase() ); - + wagonManager.addPermissionInfo( server.getId(), server.getFilePermissions(), server.getDirectoryPermissions() ); } diff --git a/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java b/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java index f12a2aece5..fa6b8a63e8 100644 --- a/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java +++ b/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java @@ -32,6 +32,7 @@ import org.apache.maven.settings.MavenSettingsBuilder; import org.apache.maven.settings.Settings; import org.apache.maven.settings.RuntimeInfo; +import org.apache.maven.wagon.events.TransferListener; import org.codehaus.classworlds.ClassWorld; import org.codehaus.classworlds.DuplicateRealmException; import org.codehaus.plexus.PlexusContainerException; @@ -171,6 +172,12 @@ public MavenProject readProject( File mavenProject ) return mavenProjectBuilder.build( mavenProject, localRepository, profileManager ); } + public MavenProject readProjectWithDependencies( File mavenProject, TransferListener transferListener ) + throws ProjectBuildingException, ArtifactResolutionException + { + return mavenProjectBuilder.buildWithDependencies( mavenProject, localRepository, profileManager, transferListener ); + } + public MavenProject readProjectWithDependencies( File mavenProject ) throws ProjectBuildingException, ArtifactResolutionException { diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index cc4d4eba27..1ce8313d77 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -18,6 +18,7 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactStatus; +import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; @@ -55,6 +56,7 @@ import org.apache.maven.project.path.PathTranslator; import org.apache.maven.project.validation.ModelValidationResult; import org.apache.maven.project.validation.ModelValidator; +import org.apache.maven.wagon.events.TransferListener; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; @@ -126,6 +128,14 @@ public class DefaultMavenProjectBuilder private ArtifactTransformationManager transformationManager; + // ---------------------------------------------------------------------- + // I am making this available for use with a new method that takes a + // a monitor wagon monitor as a parameter so that tools can use the + // methods here and receive callbacks. MNG-1015 + // ---------------------------------------------------------------------- + + private WagonManager wagonManager; + private final Map modelCache = new HashMap(); public static final String MAVEN_MODEL_VERSION = "4.0.0"; @@ -141,11 +151,21 @@ public void initialize() // MavenProjectBuilder Implementation // ---------------------------------------------------------------------- + public MavenProject buildWithDependencies( File projectDescriptor, + ArtifactRepository localRepository, + ProfileManager profileManager ) + throws ProjectBuildingException, ArtifactResolutionException + { + return buildWithDependencies( projectDescriptor, localRepository, profileManager, null ); + } + /** * @todo move to metadatasource itself? */ - public MavenProject buildWithDependencies( File projectDescriptor, ArtifactRepository localRepository, - ProfileManager profileManager ) + public MavenProject buildWithDependencies( File projectDescriptor, + ArtifactRepository localRepository, + ProfileManager profileManager, + TransferListener transferListener ) throws ProjectBuildingException, ArtifactResolutionException { MavenProject project = buildFromSourceFile( projectDescriptor, localRepository, profileManager ); @@ -177,6 +197,12 @@ public MavenProject buildWithDependencies( File projectDescriptor, ArtifactRepos { throw new ProjectBuildingException( "Error in dependency version", e ); } + + if ( transferListener != null ) + { + wagonManager.setDownloadMonitor( transferListener ); + } + ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), projectArtifact, managedVersions, localRepository, @@ -184,6 +210,7 @@ public MavenProject buildWithDependencies( File projectDescriptor, ArtifactRepos artifactMetadataSource ); project.setArtifacts( result.getArtifacts() ); + return project; } diff --git a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java index 3623c8f30d..4d1e0bf0fd 100644 --- a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java @@ -20,6 +20,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.profiles.ProfileManager; +import org.apache.maven.wagon.events.TransferListener; import java.io.File; import java.util.List; @@ -43,9 +44,25 @@ public MavenProject build( File projectDescriptor, ArtifactRepository localRepos MavenProject build( File project, ArtifactRepository localRepository, ProfileManager globalProfileManager ) throws ProjectBuildingException; - MavenProject buildWithDependencies( File project, ArtifactRepository localRepository, ProfileManager globalProfileManager ) + // ---------------------------------------------------------------------- + // These methods are used by the MavenEmbedder + // ---------------------------------------------------------------------- + + MavenProject buildWithDependencies( File project, + ArtifactRepository localRepository, + ProfileManager globalProfileManager, + TransferListener transferListener ) throws ProjectBuildingException, ArtifactResolutionException; + MavenProject buildWithDependencies( File project, + ArtifactRepository localRepository, + ProfileManager globalProfileManager ) + throws ProjectBuildingException, ArtifactResolutionException; + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + /** * Build the artifact from the local repository, resolving it if necessary. * diff --git a/maven-project/src/main/resources/META-INF/plexus/components.xml b/maven-project/src/main/resources/META-INF/plexus/components.xml index 6fd727eb1f..3ee6654e31 100644 --- a/maven-project/src/main/resources/META-INF/plexus/components.xml +++ b/maven-project/src/main/resources/META-INF/plexus/components.xml @@ -83,6 +83,9 @@ org.apache.maven.artifact.repository.ArtifactRepositoryFactory + + org.apache.maven.artifact.manager.WagonManager +