You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/07/07 00:19:25 UTC
svn commit: r554077 - in /maven/shared/trunk/maven-repository-builder/src:
main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java
Author: jdcasey
Date: Fri Jul 6 15:19:23 2007
New Revision: 554077
URL: http://svn.apache.org/viewvc?view=rev&rev=554077
Log:
[MASSEMBLY-210] This fixes inclusion of parent poms, for the current project and dependencies...both in cases where the current pom's parent is in the repository, and in the filesystem.
Modified:
maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java
Modified: maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java?view=diff&rev=554077&r1=554076&r2=554077
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java Fri Jul 6 15:19:23 2007
@@ -18,24 +18,8 @@
*/
package org.apache.maven.shared.repository;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.lang.reflect.Field;
-import java.security.NoSuchAlgorithmException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -68,6 +52,23 @@
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.security.NoSuchAlgorithmException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
/**
* @author Jason van Zyl
* @plexus.component role="org.apache.maven.shared.repository.RepositoryAssembler" role-hint="default"
@@ -207,7 +208,7 @@
}
addPomWithAncestry( project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository,
- targetRepository, groupVersionAlignments, project.getFile() );
+ targetRepository, groupVersionAlignments, project );
}
private ArtifactFilter buildRepositoryFilter( RepositoryInfo repository, MavenProject project )
@@ -307,7 +308,7 @@
writeChecksums( targetFile );
- addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments, null );
+ addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments, project );
}
}
}
@@ -330,61 +331,64 @@
* @param pomFileOverride This is used to allow injection of a POM's file directly, for
* cases where the POM has not been installed into the repository yet.
*/
- private void addPomWithAncestry( Artifact artifact, List remoteArtifactRepositories,
+ private void addPomWithAncestry( final Artifact artifact, List remoteArtifactRepositories,
ArtifactRepository localRepository, ArtifactRepository targetRepository,
- Map groupVersionAlignments, File pomFileOverride )
+ Map groupVersionAlignments, MavenProject masterProject )
throws RepositoryAssemblyException
{
String type = artifact.getType();
+ Map refs = masterProject.getProjectReferences();
+
+ String projectKey = ArtifactUtils.versionlessKey( artifact );
MavenProject p;
- try
+ if ( artifact == masterProject.getArtifact() )
{
- if ( pomFileOverride == null )
+ p = masterProject;
+ }
+ else if ( refs.containsKey( projectKey ) )
+ {
+ p = (MavenProject) refs.get( projectKey );
+ }
+ else
+ {
+ try
{
- artifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
- p = projectBuilder.buildFromRepository( artifact, remoteArtifactRepositories, localRepository );
+ artifact.isSnapshot();
+
+ Artifact pomArtifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getBaseVersion() );
+ p = projectBuilder.buildFromRepository( pomArtifact, remoteArtifactRepositories, localRepository );
}
- else
+ catch ( ProjectBuildingException e )
{
- p = projectBuilder.build( pomFileOverride, localRepository, null );
+ throw new RepositoryAssemblyException( "Error reading POM for: " + artifact.getId(), e );
}
}
- catch ( ProjectBuildingException e )
- {
- throw new RepositoryAssemblyException( "Error reading POM for: " + artifact.getId(), e );
- }
// if we're dealing with a POM artifact, then we've already copied the POM itself; only process ancestry.
// NOTE: We need to preserve the original artifact for comparison here.
if ( "pom".equals( type ) )
{
p = p.getParent();
-
- // this automatically negates the pomFileOverride, if it exists.
- pomFileOverride = null;
}
while( p != null )
{
- artifact = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
+ Artifact destArtifact = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
.getVersion() );
- setAlignment( artifact, groupVersionAlignments );
+ setAlignment( destArtifact, groupVersionAlignments );
- File sourceFile;
+ File sourceFile = p.getFile();
- // if we have an override for the current POM, use it.
- if ( pomFileOverride != null )
+ // try to use the POM file from the project instance itself first.
+ if ( ( sourceFile == null ) || !sourceFile.exists() )
{
- sourceFile = pomFileOverride;
+ // something that hasn't been realigned yet...we want to read from the original location.
+ Artifact srcArtifact = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
+ .getVersion() );
- // use it at most once.
- pomFileOverride = null;
- }
- else
- {
- sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+ sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( srcArtifact ) );
}
if ( !sourceFile.exists() )
@@ -392,7 +396,7 @@
break;
}
- File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
+ File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( destArtifact ) );
try
{
@@ -400,7 +404,7 @@
}
catch ( IOException e )
{
- throw new RepositoryAssemblyException( "Error writing POM metdata: " + artifact.getId(), e );
+ throw new RepositoryAssemblyException( "Error writing POM metdata: " + destArtifact.getId(), e );
}
try
@@ -409,7 +413,7 @@
}
catch ( IOException e )
{
- throw new RepositoryAssemblyException( "Error writing checksums for POM: " + artifact.getId(), e );
+ throw new RepositoryAssemblyException( "Error writing checksums for POM: " + destArtifact.getId(), e );
}
p = p.getParent();
Modified: maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java?view=diff&rev=554077&r1=554076&r2=554077
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java Fri Jul 6 15:19:23 2007
@@ -18,7 +18,6 @@
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.shared.repository.model.DefaultRepositoryInfo;
import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.logging.Logger;
import java.io.File;
import java.io.IOException;
@@ -50,8 +49,6 @@
{
super.setUp();
- getContainer().getLoggerManager().setThreshold( Logger.LEVEL_DEBUG );
-
projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.class.getName() );
defaultLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.class.getName(), "default" );
@@ -161,11 +158,6 @@
assertTrue( parentFile.exists() );
}
- // TODO: This is not working, because all projects in addPomWithAncestry(..) are
- // assumed to come from the repository...maybe we can start being a little smarter on this
- // by using p.getFile() != null && p.getFile().exists() checks for ancestor poms...
- // seems like something like that was in at one point, but broke many things...
-/*
public void test_MASSEMBLY_210_projectParentIsNotInRepository()
throws ProjectBuildingException, RepositoryAssemblyException, IOException, InvalidDependencyVersionException
{
@@ -196,5 +188,5 @@
assertTrue( parentFile.exists() );
}
-*/
+
}