o refactor usage of build methods

o do not do path resolution for repository POMs
o source poms override repository poms in the cache


git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163577 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-03-16 05:08:50 +00:00
parent c865afbae9
commit de262b4236
6 changed files with 45 additions and 21 deletions

View File

@ -100,7 +100,7 @@ public Set retrieve( Artifact artifact, ArtifactRepository localRepository, List
{
if ( mavenProjectBuilder != null )
{
MavenProject p = mavenProjectBuilder.build( metadataArtifact.getFile(), localRepository );
MavenProject p = mavenProjectBuilder.buildFromRepository( metadataArtifact, localRepository );
dependencies = p.getDependencies();
}
else

View File

@ -94,13 +94,26 @@ public void initialize()
// MavenProjectBuilder Implementation
// ----------------------------------------------------------------------
public MavenProject build( File projectDescriptor, ArtifactRepository localRepository )
public MavenProject buildWithDependencies( File project, ArtifactRepository localRepository )
throws ProjectBuildingException
{
return build( projectDescriptor, localRepository, false );
return build( project, localRepository, true, true );
}
public MavenProject build( File projectDescriptor, ArtifactRepository localRepository, boolean resolveDependencies )
public MavenProject build( File project, ArtifactRepository localRepository )
throws ProjectBuildingException
{
return build( project, localRepository, false, true );
}
public MavenProject buildFromRepository( Artifact artifact, ArtifactRepository localRepository )
throws ProjectBuildingException
{
return build( artifact.getFile(), localRepository, false, false );
}
private MavenProject build( File projectDescriptor, ArtifactRepository localRepository,
boolean resolveDependencies, boolean sourceProject )
throws ProjectBuildingException
{
try
@ -124,7 +137,7 @@ public MavenProject build( File projectDescriptor, ArtifactRepository localRepos
previous = current;
}
project = processProjectLogic( project, localRepository, resolveDependencies );
project = processProjectLogic( project, localRepository, resolveDependencies, sourceProject );
return project;
}
@ -135,7 +148,7 @@ public MavenProject build( File projectDescriptor, ArtifactRepository localRepos
}
private MavenProject processProjectLogic( MavenProject project, ArtifactRepository localRepository,
boolean resolveDependencies )
boolean resolveDependencies, boolean sourceProject )
throws ProjectBuildingException, ModelInterpolationException, ArtifactResolutionException
{
Model model = modelInterpolator.interpolate( project.getModel() );
@ -146,15 +159,22 @@ private MavenProject processProjectLogic( MavenProject project, ArtifactReposito
MavenProject parentProject = project.getParent();
File projectDescriptor = project.getFile();
pathTranslator.alignToBaseDirectory( model, projectDescriptor );
if ( sourceProject )
{
pathTranslator.alignToBaseDirectory( model, projectDescriptor );
}
project = new MavenProject( model );
project.setFile( projectDescriptor );
project.setParent( parentProject );
project.setArtifacts( artifactFactory.createArtifacts( project.getDependencies(), localRepository, null ) );
projectCache.put( createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() ),
project );
String key = createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() );
MavenProject cachedProject = (MavenProject) projectCache.get( key );
if ( cachedProject == null || sourceProject )
{
projectCache.put( key, project );
}
// ----------------------------------------------------------------------
// Typically when the project builder is being used from maven proper
@ -351,7 +371,7 @@ public MavenProject buildSuperProject( ArtifactRepository localRepository )
{
project.setFile( new File( ".", "pom.xml" ) );
project = processProjectLogic( project, localRepository, false );
project = processProjectLogic( project, localRepository, false, false );
return project;
}

View File

@ -17,6 +17,7 @@
* ====================================================================
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.io.File;
@ -28,7 +29,10 @@ public interface MavenProjectBuilder
MavenProject build( File project, ArtifactRepository localRepository )
throws ProjectBuildingException;
MavenProject build( File project, ArtifactRepository localRepository, boolean transitive )
MavenProject buildWithDependencies( File project, ArtifactRepository localRepository )
throws ProjectBuildingException;
MavenProject buildFromRepository( Artifact artifact, ArtifactRepository localRepository )
throws ProjectBuildingException;
MavenProject buildSuperProject( ArtifactRepository localRepository )

View File

@ -54,19 +54,19 @@ protected File getLocalRepositoryPath()
{
return getTestFile( "src/test/resources/local-repo" );
}
protected File getFileForClasspathResource( String resource )
{
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
URL resourceUrl = cloader.getResource( resource );
File resourceFile = null;
if(resourceUrl != null)
if ( resourceUrl != null )
{
resourceFile = new File(resourceUrl.getPath());
resourceFile = new File( resourceUrl.getPath() );
}
return resourceFile;
}
@ -81,10 +81,10 @@ protected ArtifactRepository getLocalRepository()
// Project building
// ----------------------------------------------------------------------
protected MavenProject getProject( File pom, boolean transitive )
protected MavenProject getProjectWithDependencies( File pom )
throws Exception
{
return projectBuilder.build( pom, getLocalRepository(), transitive );
return projectBuilder.buildWithDependencies( pom, getLocalRepository() );
}
protected MavenProject getProject( File pom )

View File

@ -17,7 +17,7 @@ public void testProjectDirectoryBaseDirectoryAlignment()
{
File f = getTestFile( dir + "project-which-needs-directory-alignment.xml" );
MavenProject project = getProject( f, false );
MavenProject project = getProject( f );
assertNotNull( "Test project can't be null!", project );

View File

@ -47,7 +47,7 @@ public void testProjectClasspath()
declaredField.setAccessible( acc );
// XXX: end hack
MavenProject project = getProject( f, true );
MavenProject project = getProjectWithDependencies( f );
Artifact artifact;