Index: src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
===================================================================
--- src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java	(revision 638045)
+++ src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java	Sun Mar 23 11:54:42 GMT 2008
@@ -19,14 +19,19 @@
  * under the License.
  */
 
+import junit.framework.TestCase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
+import org.apache.maven.extension.ExtensionScanningException;
 import org.apache.maven.model.Build;
+import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.reactor.MavenExecutionException;
 import org.apache.maven.settings.Profile;
 import org.apache.maven.settings.Repository;
 import org.apache.maven.settings.Settings;
@@ -48,60 +53,51 @@
 import java.util.List;
 import java.util.Set;
 
-import junit.framework.TestCase;
-
 public class MavenEmbedderTest
-    extends TestCase
-{
+        extends TestCase {
     protected String basedir;
 
     protected MavenEmbedder maven;
 
     protected void setUp()
-        throws Exception
-    {
+            throws Exception {
         super.setUp();
 
-        basedir = System.getProperty( "basedir" );
+        basedir = System.getProperty("basedir");
 
-        if ( basedir == null )
-        {
+        if (basedir == null) {
-            basedir = new File( "." ).getCanonicalPath();
+            basedir = new File(".").getCanonicalPath();
         }
 
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
 
         Configuration configuration = new DefaultConfiguration()
-            .setClassLoader( classLoader )
+                .setClassLoader(classLoader)
-            .setMavenEmbedderLogger( new MavenEmbedderConsoleLogger() );
+                .setMavenEmbedderLogger(new MavenEmbedderConsoleLogger());
 
-        maven = new MavenEmbedder( configuration );
+        maven = new MavenEmbedder(configuration);
     }
 
     protected void tearDown()
-        throws Exception
-    {
+            throws Exception {
         maven.stop();
     }
 
-    protected void assertNoExceptions( MavenExecutionResult result )
-    {
+    protected void assertNoExceptions(MavenExecutionResult result) {
         List exceptions = result.getExceptions();
-        if ( ( exceptions == null ) || exceptions.isEmpty() )
-        {
+        if ((exceptions == null) || exceptions.isEmpty()) {
             // everything is a-ok.
             return;
         }
 
-        System.err.println( "Encountered " + exceptions.size() + " exception(s)." );
+        System.err.println("Encountered " + exceptions.size() + " exception(s).");
         Iterator it = exceptions.iterator();
-        while ( it.hasNext() )
-        {
+        while (it.hasNext()) {
             Exception exception = (Exception) it.next();
-            exception.printStackTrace( System.err );
+            exception.printStackTrace(System.err);
         }
 
-        fail( "Encountered Exceptions in MavenExecutionResult during " + getName() );
+        fail("Encountered Exceptions in MavenExecutionResult during " + getName());
     }
 
     // ----------------------------------------------------------------------
@@ -109,100 +105,97 @@
     // ----------------------------------------------------------------------
 
     public void testExecutionUsingABaseDirectory()
-        throws Exception
-    {
+            throws Exception {
-        File testDirectory = new File( basedir, "src/test/embedder-test-project" );
+        File testDirectory = new File(basedir, "src/test/embedder-test-project");
 
-        File targetDirectory = new File( basedir, "target/embedder-test-project0" );
+        File targetDirectory = new File(basedir, "target/embedder-test-project0");
 
-        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        FileUtils.copyDirectoryStructure(testDirectory, targetDirectory);
 
-        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( targetDirectory )
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory(targetDirectory)
-            .setShowErrors( true ).setGoals( Arrays.asList( new String[]{"package"} ) );
+                .setShowErrors(true).setGoals(Arrays.asList(new String[]{"package"}));
 
-        MavenExecutionResult result = maven.execute( request );
+        MavenExecutionResult result = maven.execute(request);
 
-        assertNoExceptions( result );
+        assertNoExceptions(result);
 
         MavenProject project = result.getProject();
 
-        assertEquals( "embedder-test-project", project.getArtifactId() );
+        assertEquals("embedder-test-project", project.getArtifactId());
 
-        File jar = new File( targetDirectory, "target/embedder-test-project-1.0-SNAPSHOT.jar" );
+        File jar = new File(targetDirectory, "target/embedder-test-project-1.0-SNAPSHOT.jar");
 
-        assertTrue( jar.exists() );
+        assertTrue(jar.exists());
     }
 
     public void testExecutionUsingAPomFile()
-        throws Exception
-    {
+            throws Exception {
-        File testDirectory = new File( basedir, "src/test/embedder-test-project" );
+        File testDirectory = new File(basedir, "src/test/embedder-test-project");
 
-        File targetDirectory = new File( basedir, "target/embedder-test-project1" );
+        File targetDirectory = new File(basedir, "target/embedder-test-project1");
 
-        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        FileUtils.copyDirectoryStructure(testDirectory, targetDirectory);
 
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
-            .setPom( new File( targetDirectory, "pom.xml" ) ).setShowErrors( true )
+                .setPom(new File(targetDirectory, "pom.xml")).setShowErrors(true)
-            .setGoals( Arrays.asList( new String[] { "package" } ) );
+                .setGoals(Arrays.asList(new String[]{"package"}));
 
-        MavenExecutionResult result = maven.execute( request );
+        MavenExecutionResult result = maven.execute(request);
 
-        assertNoExceptions( result );
+        assertNoExceptions(result);
 
         MavenProject project = result.getProject();
 
-        assertEquals( "embedder-test-project", project.getArtifactId() );
+        assertEquals("embedder-test-project", project.getArtifactId());
 
-        File jar = new File( targetDirectory, "target/embedder-test-project-1.0-SNAPSHOT.jar" );
+        File jar = new File(targetDirectory, "target/embedder-test-project-1.0-SNAPSHOT.jar");
 
-        assertTrue( jar.exists() );
+        assertTrue(jar.exists());
     }
 
     public void testExecutionUsingAProfileWhichSetsAProperty()
-        throws Exception
-    {
+            throws Exception {
-        File testDirectory = new File( basedir, "src/test/embedder-test-project" );
+        File testDirectory = new File(basedir, "src/test/embedder-test-project");
 
-        File targetDirectory = new File( basedir, "target/embedder-test-project2" );
+        File targetDirectory = new File(basedir, "target/embedder-test-project2");
 
-        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        FileUtils.copyDirectoryStructure(testDirectory, targetDirectory);
 
         // Check with profile not active
 
         MavenExecutionRequest requestWithoutProfile = new DefaultMavenExecutionRequest()
-            .setPom( new File( targetDirectory, "pom.xml" ) ).setShowErrors( true )
+                .setPom(new File(targetDirectory, "pom.xml")).setShowErrors(true)
-            .setGoals( Arrays.asList( new String[] { "validate" } ) );
+                .setGoals(Arrays.asList(new String[]{"validate"}));
 
-        MavenExecutionResult r0 = maven.execute( requestWithoutProfile );
+        MavenExecutionResult r0 = maven.execute(requestWithoutProfile);
 
-        assertNoExceptions( r0 );
+        assertNoExceptions(r0);
 
         MavenProject p0 = r0.getProject();
 
-        assertNull( p0.getProperties().getProperty( "embedderProfile" ) );
+        assertNull(p0.getProperties().getProperty("embedderProfile"));
 
-        assertNull( p0.getProperties().getProperty( "name" ) );
+        assertNull(p0.getProperties().getProperty("name"));
 
-        assertNull( p0.getProperties().getProperty( "occupation" ) );
+        assertNull(p0.getProperties().getProperty("occupation"));
 
         // Check with profile activated
 
         MavenExecutionRequest request = new DefaultMavenExecutionRequest()
-            .setPom( new File( targetDirectory, "pom.xml" ) )
+                .setPom(new File(targetDirectory, "pom.xml"))
-            .setShowErrors( true )
+                .setShowErrors(true)
-            .setGoals( Arrays.asList( new String[] { "validate" } ) )
+                .setGoals(Arrays.asList(new String[]{"validate"}))
-            .addActiveProfile( "embedderProfile" );
+                .addActiveProfile("embedderProfile");
 
-        MavenExecutionResult r1 = maven.execute( request );
+        MavenExecutionResult r1 = maven.execute(request);
 
         MavenProject p1 = r1.getProject();
 
-        assertEquals( "true", p1.getProperties().getProperty( "embedderProfile" ) );
+        assertEquals("true", p1.getProperties().getProperty("embedderProfile"));
 
-        assertEquals( "jason", p1.getProperties().getProperty( "name" ) );
+        assertEquals("jason", p1.getProperties().getProperty("name"));
 
-        assertEquals( "somnambulance", p1.getProperties().getProperty( "occupation" ) );
+        assertEquals("somnambulance", p1.getProperties().getProperty("occupation"));
     }
 
     /**
@@ -211,59 +204,58 @@
      * @throws Exception
      */
     public void testTwoExecutionsDoNotCacheChangedData()
-        throws Exception
-    {
+            throws Exception {
-        File testDirectory = new File( basedir, "src/test/embedder-test-project" );
+        File testDirectory = new File(basedir, "src/test/embedder-test-project");
 
-        File targetDirectory = new File( basedir, "target/embedder-test-project-caching" );
+        File targetDirectory = new File(basedir, "target/embedder-test-project-caching");
 
-        FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
+        FileUtils.copyDirectoryStructure(testDirectory, targetDirectory);
 
-        File pom = new File( targetDirectory, "pom.xml" );
+        File pom = new File(targetDirectory, "pom.xml");
 
         /* Add the surefire plugin 2.2 to the pom */
-        Model model = maven.readModel( pom );
+        Model model = maven.readModel(pom);
 
         Plugin plugin = new Plugin();
-        plugin.setArtifactId( "maven-surefire-plugin" );
+        plugin.setArtifactId("maven-surefire-plugin");
-        plugin.setVersion( "2.2" );
+        plugin.setVersion("2.2");
-        model.setBuild( new Build() );
+        model.setBuild(new Build());
-        model.getBuild().addPlugin( plugin );
+        model.getBuild().addPlugin(plugin);
 
-        Writer writer = WriterFactory.newXmlWriter( pom );
+        Writer writer = WriterFactory.newXmlWriter(pom);
-        maven.writeModel( writer, model );
+        maven.writeModel(writer, model);
         writer.close();
 
         /* execute maven */
-        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setPom( pom ).setShowErrors( true )
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setPom(pom).setShowErrors(true)
-            .setGoals( Arrays.asList( new String[] { "package" } ) );
+                .setGoals(Arrays.asList(new String[]{"package"}));
 
-        MavenExecutionResult result = maven.execute( request );
+        MavenExecutionResult result = maven.execute(request);
 
-        assertNoExceptions( result );
+        assertNoExceptions(result);
 
         MavenProject project = result.getProject();
 
-        Artifact p = (Artifact) project.getPluginArtifactMap().get( plugin.getKey() );
+        Artifact p = (Artifact) project.getPluginArtifactMap().get(plugin.getKey());
-        assertEquals( "2.2", p.getVersion() );
+        assertEquals("2.2", p.getVersion());
 
         /* Add the surefire plugin 2.3 to the pom */
-        plugin.setVersion( "2.3" );
+        plugin.setVersion("2.3");
-        writer = WriterFactory.newXmlWriter( pom );
+        writer = WriterFactory.newXmlWriter(pom);
-        maven.writeModel( writer, model );
+        maven.writeModel(writer, model);
         writer.close();
 
         /* execute Maven */
-        request = new DefaultMavenExecutionRequest().setPom( pom ).setShowErrors( true )
+        request = new DefaultMavenExecutionRequest().setPom(pom).setShowErrors(true)
-            .setGoals( Arrays.asList( new String[] { "package" } ) );
+                .setGoals(Arrays.asList(new String[]{"package"}));
-        result = maven.execute( request );
+        result = maven.execute(request);
 
-        assertNoExceptions( result );
+        assertNoExceptions(result);
 
         project = result.getProject();
 
-        p = (Artifact) project.getPluginArtifactMap().get( plugin.getKey() );
+        p = (Artifact) project.getPluginArtifactMap().get(plugin.getKey());
-        assertEquals( "2.3", p.getVersion() );
+        assertEquals("2.3", p.getVersion());
     }
 
     // ----------------------------------------------------------------------
@@ -271,15 +263,14 @@
     // ----------------------------------------------------------------------
 
     public void testRetrievingLifecyclePhases()
-        throws Exception
-    {
+            throws Exception {
         List phases = maven.getLifecyclePhases();
 
-        assertEquals( "validate", (String) phases.get( 0 ) );
+        assertEquals("validate", (String) phases.get(0));
 
-        assertEquals( "initialize", (String) phases.get( 1 ) );
+        assertEquals("initialize", (String) phases.get(1));
 
-        assertEquals( "generate-sources", (String) phases.get( 2 ) );
+        assertEquals("generate-sources", (String) phases.get(2));
     }
 
     // ----------------------------------------------------------------------
@@ -287,9 +278,8 @@
     // ----------------------------------------------------------------------
 
     public void testLocalRepositoryRetrieval()
-        throws Exception
-    {
+            throws Exception {
-        assertNotNull( maven.getLocalRepository().getBasedir() );
+        assertNotNull(maven.getLocalRepository().getBasedir());
     }
 
     // ----------------------------------------------------------------------
@@ -297,54 +287,50 @@
     // ----------------------------------------------------------------------
 
     public void testModelReading()
-        throws Exception
-    {
+            throws Exception {
         // ----------------------------------------------------------------------
         // Test model reading
         // ----------------------------------------------------------------------
 
-        Model model = maven.readModel( getPomFile() );
+        Model model = maven.readModel(getPomFile());
 
-        assertEquals( "org.apache.maven", model.getGroupId() );
+        assertEquals("org.apache.maven", model.getGroupId());
     }
 
     public void testProjectReading()
-        throws Exception
-    {
+            throws Exception {
-        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setShowErrors( true ).setPom( getPomFile() );
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setShowErrors(true).setPom(getPomFile());
 
-        MavenExecutionResult result = maven.readProjectWithDependencies( request );
+        MavenExecutionResult result = maven.readProjectWithDependencies(request);
 
-        assertNoExceptions( result );
+        assertNoExceptions(result);
 
-        assertEquals( "org.apache.maven", result.getProject().getGroupId() );
+        assertEquals("org.apache.maven", result.getProject().getGroupId());
 
         Set artifacts = result.getProject().getArtifacts();
 
-        assertEquals( 1, artifacts.size() );
+        assertEquals(1, artifacts.size());
 
         artifacts.iterator().next();
     }
 
     public void testProjectReading_FromChildLevel_ScmInheritanceCalculations()
-        throws Exception
-    {
+            throws Exception {
-        File pomFile = new File( basedir, "src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml" );
+        File pomFile = new File(basedir, "src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml");
 
-        MavenProject project = maven.readProject( pomFile );
+        MavenProject project = maven.readProject(pomFile);
 
-        assertEquals( "http://host/viewer?path=/trunk/parent/modules/child1", project.getScm().getUrl() );
+        assertEquals("http://host/viewer?path=/trunk/parent/modules/child1", project.getScm().getUrl());
-        assertEquals( "scm:svn:http://host/trunk/parent/modules/child1", project.getScm().getConnection() );
+        assertEquals("scm:svn:http://host/trunk/parent/modules/child1", project.getScm().getConnection());
-        assertEquals( "scm:svn:https://host/trunk/parent/modules/child1", project.getScm().getDeveloperConnection() );
+        assertEquals("scm:svn:https://host/trunk/parent/modules/child1", project.getScm().getDeveloperConnection());
     }
 
     public void testProjectReading_SkipMissingModuleSilently()
-        throws Exception
-    {
+            throws Exception {
-        File pomFile = new File( basedir,
+        File pomFile = new File(basedir,
-                                 "src/test/projects/readProject-missingModuleIgnored/pom.xml" );
+                "src/test/projects/readProject-missingModuleIgnored/pom.xml");
 
-        maven.readProject( pomFile );
+        maven.readProject(pomFile);
     }
 
     /*
@@ -374,23 +360,22 @@
     // ----------------------------------------------------------------------------
 
     public void testModelWriting()
-        throws Exception
-    {
+            throws Exception {
-        Model model = maven.readModel( getPomFile() );
+        Model model = maven.readModel(getPomFile());
 
-        model.setGroupId( "org.apache.maven.new" );
+        model.setGroupId("org.apache.maven.new");
 
-        File file = new File( basedir, "target/model.xml" );
+        File file = new File(basedir, "target/model.xml");
 
-        Writer writer = WriterFactory.newXmlWriter( file );
+        Writer writer = WriterFactory.newXmlWriter(file);
 
-        maven.writeModel( writer, model );
+        maven.writeModel(writer, model);
 
         writer.close();
 
-        model = maven.readModel( file );
+        model = maven.readModel(file);
 
-        assertEquals( "org.apache.maven.new", model.getGroupId() );
+        assertEquals("org.apache.maven.new", model.getGroupId());
     }
 
     // ----------------------------------------------------------------------
@@ -398,147 +383,181 @@
     // ----------------------------------------------------------------------
 
     public void testReadSettings()
-        throws IOException, SettingsConfigurationException, MavenEmbedderException
-    {
+            throws IOException, SettingsConfigurationException, MavenEmbedderException {
         Settings s = new Settings();
-        s.setOffline( true );
+        s.setOffline(true);
 
         String localRepoPath = "/path/to/local/repo";
 
-        s.setLocalRepository( localRepoPath );
+        s.setLocalRepository(localRepoPath);
 
-        File settingsFile = File.createTempFile( "embedder-test.settings.", "" );
+        File settingsFile = File.createTempFile("embedder-test.settings.", "");
         settingsFile.deleteOnExit();
 
         Writer writer = null;
-        try
-        {
+        try {
-            writer = WriterFactory.newXmlWriter( settingsFile );
+            writer = WriterFactory.newXmlWriter(settingsFile);
-            new SettingsXpp3Writer().write( writer, s );
+            new SettingsXpp3Writer().write(writer, s);
         }
-        finally
-        {
+        finally {
-            IOUtil.close( writer );
+            IOUtil.close(writer);
         }
 
-        Settings result = MavenEmbedder.readSettings( settingsFile );
+        Settings result = MavenEmbedder.readSettings(settingsFile);
 
-        assertEquals( localRepoPath, result.getLocalRepository() );
+        assertEquals(localRepoPath, result.getLocalRepository());
-        assertTrue( result.isOffline() );
+        assertTrue(result.isOffline());
     }
 
     public void testReadSettings_shouldFailToValidate()
-        throws IOException, SettingsConfigurationException, MavenEmbedderException
-    {
+            throws IOException, SettingsConfigurationException, MavenEmbedderException {
         Settings s = new Settings();
 
         Profile p = new Profile();
 
         Repository r = new Repository();
-        r.setUrl( "http://example.com" );
+        r.setUrl("http://example.com");
 
-        p.addRepository( r );
+        p.addRepository(r);
-        s.addProfile( p );
+        s.addProfile(p);
 
-        File settingsFile = File.createTempFile( "embedder-test.settings.", "" );
+        File settingsFile = File.createTempFile("embedder-test.settings.", "");
         settingsFile.deleteOnExit();
 
         Writer writer = null;
-        try
-        {
+        try {
-            writer = WriterFactory.newXmlWriter( settingsFile );
+            writer = WriterFactory.newXmlWriter(settingsFile);
-            new SettingsXpp3Writer().write( writer, s );
+            new SettingsXpp3Writer().write(writer, s);
         }
-        finally
-        {
+        finally {
-            IOUtil.close( writer );
+            IOUtil.close(writer);
         }
 
-        try
-        {
+        try {
-            MavenEmbedder.readSettings( settingsFile );
+            MavenEmbedder.readSettings(settingsFile);
 
-            fail( "Settings should not pass validation when being read." );
+            fail("Settings should not pass validation when being read.");
         }
-        catch ( IOException e )
-        {
+        catch (IOException e) {
             String message = e.getMessage();
-            assertTrue( message.indexOf( "Failed to validate" ) > -1 );
+            assertTrue(message.indexOf("Failed to validate") > -1);
         }
     }
 
     public void testWriteSettings()
-        throws IOException, SettingsConfigurationException, MavenEmbedderException, XmlPullParserException
-    {
+            throws IOException, SettingsConfigurationException, MavenEmbedderException, XmlPullParserException {
         Settings s = new Settings();
 
-        s.setOffline( true );
+        s.setOffline(true);
 
         String localRepoPath = "/path/to/local/repo";
 
-        s.setLocalRepository( localRepoPath );
+        s.setLocalRepository(localRepoPath);
 
-        File settingsFile = new File( System.getProperty( "basedir" ), "target/test-settings.xml" );
+        File settingsFile = new File(System.getProperty("basedir"), "target/test-settings.xml");
 
         settingsFile.getParentFile().mkdirs();
 
         settingsFile.deleteOnExit();
 
-        MavenEmbedder.writeSettings( settingsFile, s );
+        MavenEmbedder.writeSettings(settingsFile, s);
 
         Reader reader = null;
 
-        try
-        {
+        try {
-            reader = ReaderFactory.newXmlReader( settingsFile );
+            reader = ReaderFactory.newXmlReader(settingsFile);
 
-            Settings result = new SettingsXpp3Reader().read( reader );
+            Settings result = new SettingsXpp3Reader().read(reader);
 
-            assertEquals( localRepoPath, result.getLocalRepository() );
+            assertEquals(localRepoPath, result.getLocalRepository());
 
-            assertTrue( result.isOffline() );
+            assertTrue(result.isOffline());
         }
-        finally
-        {
+        finally {
-            IOUtil.close( reader );
+            IOUtil.close(reader);
         }
     }
 
     public void testWriteSettings_shouldFailToValidate()
-        throws IOException, SettingsConfigurationException, MavenEmbedderException
-    {
+            throws IOException, SettingsConfigurationException, MavenEmbedderException {
         Settings s = new Settings();
 
         Profile p = new Profile();
 
         Repository r = new Repository();
-        r.setUrl( "http://example.com" );
+        r.setUrl("http://example.com");
 
-        p.addRepository( r );
+        p.addRepository(r);
-        s.addProfile( p );
+        s.addProfile(p);
 
-        File settingsFile = File.createTempFile( "embedder-test.settings.", "" );
+        File settingsFile = File.createTempFile("embedder-test.settings.", "");
         settingsFile.deleteOnExit();
 
-        try
-        {
+        try {
-            MavenEmbedder.writeSettings( settingsFile, s );
+            MavenEmbedder.writeSettings(settingsFile, s);
 
-            fail( "Validation of settings should fail before settings are written." );
+            fail("Validation of settings should fail before settings are written.");
         }
-        catch ( IOException e )
-        {
+        catch (IOException e) {
             String message = e.getMessage();
-            assertTrue( message.indexOf( "Failed to validate" ) > -1 );
+            assertTrue(message.indexOf("Failed to validate") > -1);
         }
     }
 
+    public void testReadMultiProject() throws ExtensionScanningException, MavenExecutionException, ProjectBuildingException {
+        File pomBase = new File(basedir, "src/test/projects/readProject-MultiProjectDeps");
+
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest()
+                .setBaseDirectory(pomBase);
+
+        MavenExecutionResult result = maven.readProjectWithDependencies(request);
+
+        List<MavenProject> projects = result.getTopologicallySortedProjects();
+
+        boolean foundParent = false;
+        boolean foundChild = false;
+
+        for (MavenProject project : projects) {
+            if (project.getArtifactId().equals("parent")) {
+                foundParent = true;
+                assertEquals(0, project.getDependencies().size());
+
+            } else if (project.getArtifactId().equals("child")) {
+                foundChild = true;
+                List<Dependency> dependencies = project.getDependencies();
+                boolean foundHighTide = false;
+                boolean foundTestNg = false;
+                for (Dependency dependency : dependencies) {
+                    if (dependency.getGroupId().equals("com.webtide.hightide")
+                            && dependency.getArtifactId().equals("hightide-provided-apis")
+                            && dependency.getType().equals("pom")
+                            && dependency.getVersion().equals("6.1H.7")) {
+                        foundHighTide = true;
+                        // Now check exclusions are still there
+                        assertNotNull("Exclusions from parent POM are missing", dependency.getExclusions());
+                    } else if (dependency.getGroupId().equals("org.testng")
+                            && dependency.getArtifactId().equals("testng")
+                            && dependency.getType().equals("jar")
+                            && dependency.getVersion().equals("5.7")) {
+                        foundTestNg = true;
+                    }
+                }
+                assertTrue(foundHighTide);
+                assertTrue(foundTestNg);
+            } else {
+                fail("Unexpected project found:" + project.getArtifactId());
+            }
+        }
+        assertTrue(foundChild);
+        assertTrue(foundParent);
+    }
+
     // ----------------------------------------------------------------------
     // Internal Utilities
     // ----------------------------------------------------------------------
 
-    protected File getPomFile()
-    {
+    protected File getPomFile() {
-        return new File( basedir, "src/test/resources/pom.xml" );
+        return new File(basedir, "src/test/resources/pom.xml");
     }
 }
Index: src/test/projects/readProject-MultiProjectDeps/pom.xml
===================================================================
--- src/test/projects/readProject-MultiProjectDeps/pom.xml	Sun Mar 23 11:05:36 GMT 2008
+++ src/test/projects/readProject-MultiProjectDeps/pom.xml	Sun Mar 23 11:05:36 GMT 2008
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <groupId>multiproject.deps</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <name>parent</name>
+
+    <modules>
+        <module>child</module>
+    </modules>
+
+    <!-- In the parent set set dependency on POM type projects
+        and set the version via a property -->
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.webtide.hightide</groupId>
+                <artifactId>hightide-provided-apis</artifactId>
+                <!--<version>${hightide-version}</version>-->
+                <version>6.1H.7</version>
+                <scope>provided</scope>
+                <type>pom</type>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.apache.geronimo.specs</groupId>
+                        <artifactId>geronimo-jms_1.1_spec</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>geronimo-spec</groupId>
+                        <artifactId>geronimo-spec-jta</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>org.testng</groupId>
+                <artifactId>testng</artifactId>
+                <version>5.7</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <properties>
+        <hightide-version>6.1H.7</hightide-version>
+    </properties>
+
+
+</project>
Index: src/test/projects/readProject-MultiProjectDeps/child/pom.xml
===================================================================
--- src/test/projects/readProject-MultiProjectDeps/child/pom.xml	Sun Mar 23 11:54:41 GMT 2008
+++ src/test/projects/readProject-MultiProjectDeps/child/pom.xml	Sun Mar 23 11:54:41 GMT 2008
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>multiproject.deps</groupId>
+    <artifactId>child</artifactId>
+    <packaging>jar</packaging>
+    <name>child</name>
+
+    <parent>
+        <groupId>multiproject.deps</groupId>
+        <artifactId>parent</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.webtide.hightide</groupId>
+            <artifactId>hightide-provided-apis</artifactId>
+            <type>pom</type>
+            <!-- Add this line and it works again but loses parent dependencies -->
+            <!--<version>6.1H.7</version>-->
+        </dependency>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>

