diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index 1ac1fa9362..1a61aa5ab3 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -21,7 +21,6 @@ package org.apache.maven.project; import java.io.File; import java.io.IOException; -import java.io.Reader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -42,7 +41,6 @@ import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.model.Build; import org.apache.maven.model.Model; import org.apache.maven.model.Profile; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import org.apache.maven.profiles.MavenProfilesBuilder; import org.apache.maven.profiles.ProfileManager; import org.apache.maven.profiles.activation.DefaultProfileActivationContext; @@ -61,9 +59,6 @@ import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.util.IOUtil; -import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; @@ -72,7 +67,7 @@ import org.codehaus.plexus.util.StringUtils; */ @Component(role = MavenProjectBuilder.class) public class DefaultMavenProjectBuilder - implements MavenProjectBuilder, Initializable, LogEnabled + implements MavenProjectBuilder, LogEnabled { @Requirement protected MavenProfilesBuilder profilesBuilder; @@ -89,8 +84,6 @@ public class DefaultMavenProjectBuilder @Requirement private ProjectBuilder projectBuilder; - private MavenXpp3Reader modelReader; - private Logger logger; @Requirement @@ -109,15 +102,8 @@ public class DefaultMavenProjectBuilder private Map processedProjectCache = new HashMap(); - private static final String MAVEN_MODEL_VERSION = "4.0.0"; - private static HashMap hm = new HashMap(); - public void initialize() - { - modelReader = new MavenXpp3Reader(); - } - // ---------------------------------------------------------------------- // MavenProjectBuilder Implementation // ---------------------------------------------------------------------- @@ -134,8 +120,8 @@ public class DefaultMavenProjectBuilder public MavenProject build( File projectDescriptor, ProjectBuilderConfiguration config ) throws ProjectBuildingException - { - List repositories = mavenTools.buildArtifactRepositories( getSuperModel() ); + { + List repositories = mavenTools.buildArtifactRepositories( projectBuilder.getSuperModel() ); MavenProject project = readModelFromLocalPath( "unknown", projectDescriptor, @@ -199,7 +185,7 @@ public class DefaultMavenProjectBuilder ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository ); List artifactRepositories = new ArrayList( remoteArtifactRepositories ); - artifactRepositories.addAll( mavenTools.buildArtifactRepositories( getSuperModel() ) ); + artifactRepositories.addAll( mavenTools.buildArtifactRepositories( projectBuilder.getSuperModel() ) ); project = readModelFromLocalPath( "unknown", artifact.getFile(), new DefaultPomArtifactResolver( config.getLocalRepository(), artifactRepositories, artifactResolver ), config ); project = buildWithProfiles( project.getModel(), config, artifact.getFile(), project.getParentFile(), false ); @@ -220,7 +206,7 @@ public class DefaultMavenProjectBuilder public MavenProject buildStandaloneSuperProject( ProjectBuilderConfiguration config ) throws ProjectBuildingException { - Model superModel = getSuperModel(); + Model superModel = projectBuilder.getSuperModel(); MavenProject project = null; @@ -358,7 +344,7 @@ public class DefaultMavenProjectBuilder return superProject; } - Model model = getSuperModel(); + Model model = projectBuilder.getSuperModel(); try { @@ -373,35 +359,6 @@ public class DefaultMavenProjectBuilder return superProject; } - private Model superModel; - - private Model getSuperModel() - { - if ( superModel != null ) - { - return superModel; - } - - Reader reader = null; - - try - { - reader = ReaderFactory.newXmlReader( getClass().getResource( "pom-" + MAVEN_MODEL_VERSION + ".xml" ) ); - - superModel = modelReader.read( reader, STRICT_MODEL_PARSING ); - } - catch ( Exception e ) - { - // Not going to happen we're reading the super pom embedded in the JAR - } - finally - { - IOUtil.close( reader ); - } - - return superModel; - } - private MavenProject readModelFromLocalPath( String projectId, File projectDescriptor, PomArtifactResolver resolver, ProjectBuilderConfiguration config ) throws ProjectBuildingException { @@ -424,15 +381,13 @@ public class DefaultMavenProjectBuilder new SimpleDateFormat("yyyyMMdd-hhmm").format( config.getBuildStartTime() ), PomInterpolatorTag.PROJECT_PROPERTIES.name())); } - - interpolatorProperties.add(new InterpolatorProperty("${mavenVersion}", MavenProjectBuilder.STANDALONE_SUPERPOM_VERSION, PomInterpolatorTag.EXECUTION_PROPERTIES.name())); MavenProject mavenProject; try { mavenProject = projectBuilder.buildFromLocalPath( projectDescriptor, - Arrays.asList( getSuperModel() ), + Arrays.asList( projectBuilder.getSuperModel() ), interpolatorProperties, resolver, config ); diff --git a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java index 4bdba716d7..bb66ec3ad0 100644 --- a/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/MavenProjectBuilder.java @@ -24,12 +24,6 @@ import java.util.List; public interface MavenProjectBuilder { - String STANDALONE_SUPERPOM_GROUPID = "org.apache.maven"; - - String STANDALONE_SUPERPOM_ARTIFACTID = "super-pom"; - - String STANDALONE_SUPERPOM_VERSION = "3.0-SNAPSHOT"; - boolean STRICT_MODEL_PARSING = true; // Used directly by plugins diff --git a/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java index 31c536ad33..f00001ccf5 100644 --- a/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java @@ -59,4 +59,5 @@ public interface ProjectBuilder ProjectBuilderConfiguration projectBuilderConfiguration ) throws IOException; + Model getSuperModel(); } diff --git a/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java index 8c1c6c396e..69ac93ac61 100644 --- a/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java @@ -21,6 +21,7 @@ package org.apache.maven.project.builder.impl; import java.io.File; import java.io.IOException; +import java.io.Reader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -33,6 +34,7 @@ import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.model.Model; import org.apache.maven.model.Parent; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuilderConfiguration; import org.apache.maven.project.builder.ArtifactModelContainerFactory; @@ -50,6 +52,8 @@ import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.ReaderFactory; /** * Default implementation of the project builder. @@ -69,7 +73,8 @@ public final class DefaultProjectBuilder private Logger logger; - public PomClassicDomainModel buildModel( File pom, List mixins, + public PomClassicDomainModel buildModel( File pom, + List mixins, Collection interpolatorProperties, PomArtifactResolver resolver ) throws IOException @@ -154,14 +159,15 @@ public final class DefaultProjectBuilder return transformedDomainModel; } - public MavenProject buildFromLocalPath( File pom, List inheritedModels, + public MavenProject buildFromLocalPath( File pom, + List mixins, Collection interpolatorProperties, PomArtifactResolver resolver, ProjectBuilderConfiguration projectBuilderConfiguration ) throws IOException { PomClassicDomainModel domainModel = buildModel( pom, - inheritedModels, + mixins, interpolatorProperties, resolver ); @@ -310,9 +316,43 @@ public final class DefaultProjectBuilder return domainModels; } - public void enableLogging( Logger logger ) { this.logger = logger; } + + // Super Model Handling + + private static final String MAVEN_MODEL_VERSION = "4.0.0"; + + private MavenXpp3Reader modelReader = new MavenXpp3Reader(); + + private Model superModel; + + public Model getSuperModel() + { + if ( superModel != null ) + { + return superModel; + } + + Reader reader = null; + + try + { + reader = ReaderFactory.newXmlReader( getClass().getClassLoader().getResource( "org/apache/maven/project/pom-" + MAVEN_MODEL_VERSION + ".xml" ) ); + + superModel = modelReader.read( reader, true ); + } + catch ( Exception e ) + { + // Not going to happen we're reading the super pom embedded in the JAR + } + finally + { + IOUtil.close( reader ); + } + + return superModel; + } }