Author: jdcasey
Date: Mon Aug 22 13:31:24 2005
New Revision: 239243
URL: http://svn.apache.org/viewcvs?rev=239243&view=rev
Log:
Resolving: MNG-757 according to the comments in the issue.
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=239243&r1=239242&r2=239243&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
Mon Aug 22 13:31:24 2005
@@ -58,6 +58,9 @@
private ArtifactFactory artifactFactory;
+ // lazily instantiated and cached.
+ private MavenProject superProject;
+
/**
* Retrieve the metadata for the project from the repository.
* Uses the ProjectBuilder, to enable post-processing and inheritance
calculation before retrieving the
@@ -134,12 +137,65 @@
Set artifacts = project.createArtifacts( artifactFactory,
artifact.getScope(),
artifact.getDependencyFilter() );
- return new ResolutionGroup( pomArtifact, artifacts,
project.getRemoteArtifactRepositories() );
+
+ List repositories = aggregateRepositoryLists( remoteRepositories,
project.getRemoteArtifactRepositories() );
+
+ return new ResolutionGroup( pomArtifact, artifacts, repositories );
}
catch ( InvalidVersionSpecificationException e )
{
throw new ArtifactMetadataRetrievalException( "Unable to read the
metadata file", e );
}
+ catch ( ProjectBuildingException e )
+ {
+ throw new ArtifactMetadataRetrievalException( "Unable to read the
metadata file", e );
+ }
+ }
+
+ private List aggregateRepositoryLists( List remoteRepositories, List
remoteArtifactRepositories )
+ throws ProjectBuildingException
+ {
+ if ( superProject == null )
+ {
+ superProject = mavenProjectBuilder.buildStandaloneSuperProject(
null );
+ }
+
+ List repositories = new ArrayList();
+
+ repositories.addAll( remoteRepositories );
+
+ // ensure that these are defined
+ for ( Iterator it =
superProject.getRemoteArtifactRepositories().iterator(); it.hasNext(); )
+ {
+ ArtifactRepository superRepo = (ArtifactRepository) it.next();
+
+ for ( Iterator aggregatedIterator = repositories.iterator();
aggregatedIterator.hasNext(); )
+ {
+ ArtifactRepository repo = (ArtifactRepository)
aggregatedIterator.next();
+
+ // if the repository exists in the list and was introduced by
another POM's super-pom,
+ // remove it...the repository definitions from the super-POM
should only be at the end of
+ // the list.
+ // if the repository has been redefined, leave it.
+ if ( repo.getId().equals( superRepo.getId() ) &&
repo.getUrl().equals( superRepo.getUrl() ) )
+ {
+ aggregatedIterator.remove();
+ }
+ }
+ }
+
+ // this list should contain the super-POM repositories, so we don't
have to explicitly add them back.
+ for ( Iterator it = remoteArtifactRepositories.iterator();
it.hasNext(); )
+ {
+ ArtifactRepository repository = (ArtifactRepository) it.next();
+
+ if ( !repositories.contains( repository ) )
+ {
+ repositories.add( repository );
+ }
+ }
+
+ return repositories;
}
public static Set createArtifacts( ArtifactFactory artifactFactory, List
dependencies, String inheritedScope,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]