From de262b4236b76b5876eed30e716bcec63466e98b Mon Sep 17 00:00:00 2001 From: Brett Leslie Porter Date: Wed, 16 Mar 2005 05:08:50 +0000 Subject: [PATCH] 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 --- .../maven/artifact/MavenMetadataSource.java | 2 +- .../project/DefaultMavenProjectBuilder.java | 38 ++++++++++++++----- .../maven/project/MavenProjectBuilder.java | 6 ++- .../java/org/apache/maven/MavenTestCase.java | 16 ++++---- .../ProjectBaseDirectoryAlignmentTest.java | 2 +- .../maven/project/ProjectClasspathTest.java | 2 +- 6 files changed, 45 insertions(+), 21 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java index 900e3c6a29..96368967ea 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java @@ -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 diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index 3bfe0bcf71..3cb01fbfba 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -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; } diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java index c6392f9c44..96431093d0 100644 --- a/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java @@ -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 ) diff --git a/maven-core/src/test/java/org/apache/maven/MavenTestCase.java b/maven-core/src/test/java/org/apache/maven/MavenTestCase.java index b4084034ea..6b245486b9 100644 --- a/maven-core/src/test/java/org/apache/maven/MavenTestCase.java +++ b/maven-core/src/test/java/org/apache/maven/MavenTestCase.java @@ -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 ) diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java index 69381e820a..78b621aeb3 100644 --- a/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java +++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java @@ -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 ); diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java index b011f249c2..d41d132369 100644 --- a/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java +++ b/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java @@ -47,7 +47,7 @@ public void testProjectClasspath() declaredField.setAccessible( acc ); // XXX: end hack - MavenProject project = getProject( f, true ); + MavenProject project = getProjectWithDependencies( f ); Artifact artifact;