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/06 19:10:57 UTC
svn commit: r553960 - in /maven/shared/trunk/maven-repository-builder: ./
src/main/java/org/apache/maven/shared/repository/
src/main/java/org/apache/maven/shared/repository/model/
src/test/java/org/apache/maven/shared/repository/ src/test/resources/pro...
Author: jdcasey
Date: Fri Jul 6 10:10:55 2007
New Revision: 553960
URL: http://svn.apache.org/viewvc?view=rev&rev=553960
Log:
first unit tests succeeds now.
Added:
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-SNAPSHOT.jar
- copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-SNAPSHOT.pom
- copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-SNAPSHOT.pom
- copied unchanged from r553936, maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom
Removed:
maven/shared/trunk/maven-repository-builder/src/test/resources/projects/massembly-210-direct-parent/src/main/java/
maven/shared/trunk/maven-repository-builder/src/test/resources/projects/massembly-210-direct-parent/src/test/
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.jar.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225707-1.pom.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.jar.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/child-1.0-20070618.225814-2.pom.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/maven-metadata.xml.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/1.0-SNAPSHOT/maven-metadata.xml.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/maven-metadata.xml.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/child/maven-metadata.xml.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/maven-metadata.xml.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/maven-metadata.xml.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225538-1.pom.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225707-2.pom.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/1.0-SNAPSHOT/parent-1.0-20070618.225814-3.pom.sha1
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/maven-metadata.xml.md5
maven/shared/trunk/maven-repository-builder/src/test/resources/remote-repository/massembly/210/parent/maven-metadata.xml.sha1
Modified:
maven/shared/trunk/maven-repository-builder/pom.xml
maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/DefaultRepositoryAssembler.java
maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java
maven/shared/trunk/maven-repository-builder/src/test/java/org/apache/maven/shared/repository/DefaultRepositoryBuilderTest.java
Modified: maven/shared/trunk/maven-repository-builder/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/pom.xml?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/pom.xml (original)
+++ maven/shared/trunk/maven-repository-builder/pom.xml Fri Jul 6 10:10:55 2007
@@ -54,6 +54,12 @@
<version>1.0-beta-2</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-http-lightweight</artifactId>
+ <version>1.0-beta-2</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -62,7 +68,7 @@
<version>2.3</version>
<configuration>
<excludes>
- <exclude>**/DefaultRepositoryBuilderTest.java</exclude>
+ <exclude>**/TestRepositoryBuilderConfigSource.java</exclude>
</excludes>
</configuration>
</plugin>
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=553960&r1=553959&r2=553960
==============================================================================
--- 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 10:10:55 2007
@@ -64,6 +64,7 @@
import org.apache.maven.shared.repository.utils.DigestUtils;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
@@ -121,12 +122,15 @@
ArtifactRepositoryFactory artifactRepositoryFactory,
ArtifactMetadataSource metadataSource, MavenProjectBuilder projectBuilder )
{
+ // used for testing, primarily.
this.artifactFactory = artifactFactory;
this.artifactResolver = artifactResolver;
this.repositoryLayout = repositoryLayout;
this.artifactRepositoryFactory = artifactRepositoryFactory;
this.metadataSource = metadataSource;
this.projectBuilder = projectBuilder;
+
+ enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, getClass().getName() + "::Internal" ) );
}
public void buildRemoteRepository( File repositoryDirectory, RepositoryInfo repository,
@@ -203,7 +207,7 @@
}
addPomWithAncestry( project.getArtifact(), project.getRemoteArtifactRepositories(), localRepository,
- targetRepository, groupVersionAlignments );
+ targetRepository, groupVersionAlignments, project.getFile() );
}
private ArtifactFilter buildRepositoryFilter( RepositoryInfo repository, MavenProject project )
@@ -222,7 +226,9 @@
// descriptor everytime the POM is updated.
// ----------------------------------------------------------------------------
- if ( repository.getIncludes().isEmpty() )
+ List includes = repository.getIncludes();
+
+ if ( ( includes == null ) || includes.isEmpty() )
{
List patterns = new ArrayList();
@@ -255,7 +261,9 @@
// up everything.
// ----------------------------------------------------------------------------
- if ( !repository.getExcludes().isEmpty() )
+ List excludes = repository.getExcludes();
+
+ if ( ( excludes != null ) && !excludes.isEmpty() )
{
filter.add( new PatternExcludesArtifactFilter( repository.getExcludes(), true ) );
}
@@ -299,7 +307,7 @@
writeChecksums( targetFile );
- addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments );
+ addPomWithAncestry( a, project.getRemoteArtifactRepositories(), localRepository, targetRepository, groupVersionAlignments, null );
}
}
}
@@ -317,29 +325,44 @@
}
}
+ /**
+ *
+ * @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,
ArtifactRepository localRepository, ArtifactRepository targetRepository,
- Map groupVersionAlignments )
+ Map groupVersionAlignments, File pomFileOverride )
throws RepositoryAssemblyException
{
- artifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+ String type = artifact.getType();
MavenProject p;
try
{
- p = projectBuilder.buildFromRepository( artifact,
- remoteArtifactRepositories,
- localRepository );
+ if ( pomFileOverride == null )
+ {
+ artifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+ p = projectBuilder.buildFromRepository( artifact, remoteArtifactRepositories, localRepository );
+ }
+ else
+ {
+ p = projectBuilder.build( pomFileOverride, localRepository, null );
+ }
}
catch ( ProjectBuildingException e )
{
- throw new RepositoryAssemblyException( "Error reading POM: " + artifact.getId(), 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.
- if ( "pom".equals( artifact.getType() ) )
+ // 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 )
@@ -349,7 +372,20 @@
setAlignment( artifact, groupVersionAlignments );
- File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+ File sourceFile;
+
+ // if we have an override for the current POM, use it.
+ if ( pomFileOverride != null )
+ {
+ sourceFile = pomFileOverride;
+
+ // use it at most once.
+ pomFileOverride = null;
+ }
+ else
+ {
+ sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
+ }
if ( !sourceFile.exists() )
{
@@ -485,11 +521,14 @@
{
Map groupVersionAlignments = new HashMap();
- for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
+ if ( versionAlignments != null )
{
- GroupVersionAlignment alignment = (GroupVersionAlignment) i.next();
+ for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
+ {
+ GroupVersionAlignment alignment = (GroupVersionAlignment) i.next();
- groupVersionAlignments.put( alignment.getId(), alignment );
+ groupVersionAlignments.put( alignment.getId(), alignment );
+ }
}
return groupVersionAlignments;
Modified: maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java?view=diff&rev=553960&r1=553959&r2=553960
==============================================================================
--- maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java (original)
+++ maven/shared/trunk/maven-repository-builder/src/main/java/org/apache/maven/shared/repository/model/DefaultRepositoryInfo.java Fri Jul 6 10:10:55 2007
@@ -18,6 +18,8 @@
*/
package org.apache.maven.shared.repository.model;
+import org.apache.maven.artifact.Artifact;
+
import java.util.List;
public class DefaultRepositoryInfo
@@ -26,7 +28,7 @@
private boolean includeMetadata;
- private String scope;
+ private String scope = Artifact.SCOPE_COMPILE;
private List includes;
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=553960&r1=553959&r2=553960
==============================================================================
--- 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 10:10:55 2007
@@ -1,5 +1,6 @@
package org.apache.maven.shared.repository;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -14,15 +15,14 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
+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 org.codehaus.plexus.logging.console.ConsoleLogger;
import java.io.File;
import java.io.IOException;
import java.net.URL;
-import java.util.ArrayList;
+import java.util.Collections;
public class DefaultRepositoryBuilderTest
extends PlexusTestCase
@@ -51,41 +51,43 @@
projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.class.getName() );
- File localRepo = new File( getBasedir(), "target/local-repository" );
-
defaultLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.class.getName(), "default" );
repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.class.getName() );
artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.class.getName() );
artifactResolver = (ArtifactResolver) lookup( ArtifactResolver.class.getName() );
metadataSource = (ArtifactMetadataSource) lookup( ArtifactMetadataSource.class.getName() );
+ File localRepo = new File( getBasedir(), "target/local-repository" );
+
localRepository = repoFactory.createArtifactRepository( "local", localRepo.getAbsolutePath(), defaultLayout,
null, null );
}
- private MavenProject getProject( String projectResource )
- throws ProjectBuildingException, IOException
+ private MavenProject getProject( String projectResource, String parentGroupId, String parentArtifactId, String parentVersion )
+ throws ProjectBuildingException, IOException, InvalidDependencyVersionException
{
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
- URL res = cloader.getResource( projectResource );
+ URL res = cloader.getResource( "projects/" + projectResource );
File projectFile = new File( res.getPath() );
- return projectBuilder.build( projectFile, localRepository, getProfileManager() );
+ // pre-load the parent model...this is a hack!
+ Artifact parentArtifact = artifactFactory.createParentArtifact( parentGroupId, parentArtifactId, parentVersion );
+ projectBuilder.buildFromRepository( parentArtifact, Collections.EMPTY_LIST, localRepository );
+
+ MavenProject project = projectBuilder.build( projectFile, localRepository, getProfileManager() );
+
+ project.setDependencyArtifacts( project.createArtifacts( artifactFactory, null, null ) );
+
+ return project;
}
private ProfileManager getProfileManager() throws IOException
{
if ( profileManager == null )
{
- ClassLoader cloader = Thread.currentThread().getContextClassLoader();
- URL res = cloader.getResource( "marker.txt" );
-
- File markerFile = new File( res.getPath() );
- markerFile = markerFile.getCanonicalFile();
-
- File repoDir = new File( markerFile.getParentFile(), "remote-repository" );
+ File repoDir = getTestRemoteRepositoryBasedir();
Profile profile = new Profile();
Repository repo = new Repository();
@@ -95,6 +97,8 @@
repo.setReleases( new RepositoryPolicy() );
repo.setSnapshots( new RepositoryPolicy() );
+ profile.addRepository( repo );
+
profileManager = new DefaultProfileManager( getContainer() );
profileManager.addProfile( profile );
profileManager.explicitlyActivate( "test.repo" );
@@ -103,12 +107,32 @@
return profileManager;
}
+ private File getTestRemoteRepositoryBasedir()
+ throws IOException
+ {
+ ClassLoader cloader = Thread.currentThread().getContextClassLoader();
+ URL res = cloader.getResource( "marker.txt" );
+
+ File markerFile = new File( res.getPath() );
+ markerFile = markerFile.getCanonicalFile();
+
+ File repoDir = new File( markerFile.getParentFile(), "remote-repository" );
+
+ return repoDir;
+ }
+
public void test_MASSEMBLY_210_projectParentIsIncludedInRepository()
- throws ProjectBuildingException, RepositoryAssemblyException, IOException
+ throws ProjectBuildingException, RepositoryAssemblyException, IOException, InvalidDependencyVersionException
{
- MavenProject project = getProject( "projects/massembly-210-direct-parent/pom.xml" );
- // TODO: jdcasey, the project loaded that way as no initialized Artifact objects
- // TODO: with this non resolved content the repository assembler does not run!
+ File repoDir = getTestRemoteRepositoryBasedir();
+
+ ArtifactRepository localRepository = repoFactory.createArtifactRepository(
+ "local",
+ repoDir.getAbsoluteFile().toURL().toExternalForm(),
+ defaultLayout, null, null );
+
+
+ MavenProject project = getProject( "massembly-210-direct-parent/pom.xml", "massembly.210", "parent", "1.0-SNAPSHOT" );
TestRepositoryBuilderConfigSource cs = new TestRepositoryBuilderConfigSource();
cs.setProject( project );
@@ -117,14 +141,10 @@
DefaultRepositoryAssembler assembler = new DefaultRepositoryAssembler( artifactFactory, artifactResolver,
defaultLayout, repoFactory,
metadataSource, projectBuilder );
- // TODO: NPE thrown if logger not set
- assembler.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "console"));
File repositoryDirectory = new File( getBasedir(), "target/test-repositories/massembly-210-direct-parent" );
DefaultRepositoryInfo repoInfo = new DefaultRepositoryInfo();
- // TODO: NPE if we don't call this - no clue what it's supposed to represent
- repoInfo.setGroupVersionAlignments( new ArrayList());
assembler.buildRemoteRepository( repositoryDirectory, repoInfo, cs );