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 1a61aa5ab3..8dfc75ec42 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 @@ -387,7 +387,7 @@ public class DefaultMavenProjectBuilder try { mavenProject = projectBuilder.buildFromLocalPath( projectDescriptor, - Arrays.asList( projectBuilder.getSuperModel() ), + null, interpolatorProperties, resolver, config ); 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 f00001ccf5..c44b6a568e 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 @@ -35,7 +35,6 @@ import org.apache.maven.shared.model.InterpolatorProperty; public interface ProjectBuilder { public PomClassicDomainModel buildModel( File pom, - List mixins, Collection interpolatorProperties, PomArtifactResolver resolver ) throws IOException; 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 69ac93ac61..01d2d63939 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 @@ -72,6 +72,14 @@ public final class DefaultProjectBuilder List listeners; private Logger logger; + + public PomClassicDomainModel buildModel( File pom, + Collection interpolatorProperties, + PomArtifactResolver resolver ) + throws IOException + { + return buildModel( pom, null, interpolatorProperties, resolver ); + } public PomClassicDomainModel buildModel( File pom, List mixins, @@ -92,6 +100,7 @@ public final class DefaultProjectBuilder if ( mixins == null ) { mixins = new ArrayList(); + mixins.add( getSuperModel() ); } else { diff --git a/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java b/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java new file mode 100644 index 0000000000..cd91e19c2e --- /dev/null +++ b/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java @@ -0,0 +1,83 @@ +package org.apache.maven.project.builder; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.maven.MavenTools; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.model.Model; +import org.apache.maven.model.Plugin; +import org.apache.maven.project.DefaultProjectBuilderConfiguration; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuilderConfiguration; +import org.codehaus.plexus.PlexusTestCase; + +public class PomConstructionTest + extends PlexusTestCase +{ + private static String BASE_POM_DIR = "src/test/resources-project-builder"; + + private ProjectBuilder projectBuilder; + + private MavenTools mavenTools; + + private File testDirectory; + + protected void setUp() + throws Exception + { + testDirectory = new File( getBasedir(), BASE_POM_DIR ); + + projectBuilder = lookup( ProjectBuilder.class ); + + mavenTools = lookup( MavenTools.class ); + } + + public void testNexusPoms() + throws Exception + { + Map artifacts = new HashMap(); + + File nexusAggregator = new File( testDirectory, "nexus/pom.xml" ); + File nexusParent = new File( testDirectory, "nexus/nexus-test-harness-parent/pom.xml" ); + File nexusLauncher = new File( testDirectory, "nexus/nexus-test-harness-launcher/pom.xml" ); + + artifacts.put( "nexus-test-harness-parent", nexusParent ); + artifacts.put( "nexus-test-harness-launcher" , nexusLauncher ); + artifacts.put( "nexus-test-harness", nexusAggregator ); + + PomArtifactResolver resolver = new FileBasedPomArtifactResolver( artifacts ); + + PomClassicDomainModel model = projectBuilder.buildModel( nexusLauncher, null, resolver ); + + Model m = model.getModel(); + + Plugin plugin = (Plugin) m.getBuild().getPlugins().get( 0 ); + + List executions = plugin.getExecutions(); + + //assertEquals( 7, executions.size() ); + } + + class FileBasedPomArtifactResolver + implements PomArtifactResolver + { + private Map artifacts = new HashMap(); + + public FileBasedPomArtifactResolver( Map artifacts ) + { + this.artifacts = artifacts; + } + + public void resolve( Artifact artifact ) + throws IOException + { + System.out.println( artifact ); + artifact.setFile( artifacts.get( artifact.getArtifactId() ) ); + } + } +}