Author: jdcasey
Date: Tue Jan 29 20:18:41 2008
New Revision: 616610
URL: http://svn.apache.org/viewvc?rev=616610&view=rev
Log:
Make sure that all calls to buildFromRepository use a normalized List of remote
repositories (a list of ArtifactRepository instances, not of model Repository
instances, for example)...this should be less of a concern when we can use
Java5 generics (someday).
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=616610&r1=616609&r2=616610&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Tue Jan 29 20:18:41 2008
@@ -24,6 +24,7 @@
import org.apache.maven.artifact.ArtifactStatus;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.InvalidRepositoryException;
+import org.apache.maven.artifact.UnknownRepositoryLayoutException;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -46,6 +47,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.Repository;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.profiles.MavenProfilesBuilder;
import org.apache.maven.profiles.ProfileManager;
@@ -159,13 +161,13 @@
private ProfileAdvisor profileAdvisor;
private MavenTools mavenTools;
-
+
//DO NOT USE, it is here only for backward compatibility reasons. The
existing
// maven-assembly-plugin (2.2-beta-1) is accessing it via reflection.
// the aspect weaving seems not to work for reflection from plugin.
private Map processedProjectCache = new HashMap();
-
+
public static final String MAVEN_MODEL_VERSION = "4.0.0";
@@ -456,6 +458,10 @@
ArtifactRepository localRepository )
throws ProjectBuildingException
{
+ String projectId = safeVersionlessKey( artifact.getGroupId(),
artifact.getArtifactId() );
+
+ remoteArtifactRepositories = normalizeToArtifactRepositories(
remoteArtifactRepositories, projectId );
+
Artifact projectArtifact;
// if the artifact is not a POM, we need to construct a POM artifact
based on the artifact parameter given.
@@ -477,8 +483,6 @@
Model model;
- String projectId = ArtifactUtils.versionlessKey( projectArtifact );
-
try
{
artifactResolver.resolve( projectArtifact,
remoteArtifactRepositories, localRepository );
@@ -523,6 +527,52 @@
}
return model;
+ }
+
+ private List normalizeToArtifactRepositories( List
remoteArtifactRepositories,
+ String projectId )
+ throws ProjectBuildingException
+ {
+ List normalized = new ArrayList( remoteArtifactRepositories.size() );
+
+ boolean normalizationNeeded = false;
+ for ( Iterator it = remoteArtifactRepositories.iterator();
it.hasNext(); )
+ {
+ Object item = it.next();
+
+ if ( item instanceof ArtifactRepository )
+ {
+ normalized.add( item );
+ }
+ else if ( item instanceof Repository )
+ {
+ Repository repo = (Repository) item;
+ try
+ {
+ item = mavenTools.buildArtifactRepository( repo );
+
+ normalized.add( item );
+ normalizationNeeded = true;
+ }
+ catch ( UnknownRepositoryLayoutException e )
+ {
+ throw new ProjectBuildingException( projectId, "Error
building artifact repository for id: " + repo.getId(), e );
+ }
+ }
+ else
+ {
+ throw new ProjectBuildingException( projectId, "Error building
artifact repository from non-repository information item: " + item );
+ }
+ }
+
+ if ( normalizationNeeded )
+ {
+ return normalized;
+ }
+ else
+ {
+ return remoteArtifactRepositories;
+ }
}
private void checkStatusAndUpdate( Artifact projectArtifact,