diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
index c24b1e9..74e0ffd 100644
--- a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
+++ b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
@@ -98,6 +98,8 @@ public class MavenProject
 
     public static final String EMPTY_PROJECT_VERSION = "0";
 
+    private static final MavenProject ERROR_BUILDING_PARENT = new MavenProject();
+
     private Model model;
 
     private MavenProject parent;
@@ -340,6 +342,10 @@ public class MavenProject
         return model;
     }
 
+    /**
+     * Returns the project corresponding to a declared parent.
+     * @return the parent, or null if no parent is declared or there was an error building it
+     */
     public MavenProject getParent()
     {
         if ( parent == null )
@@ -360,7 +366,11 @@ public class MavenProject
                 }
                 catch ( ProjectBuildingException e )
                 {
-                    throw new IllegalStateException( "Failed to build parent project for " + getId(), e );
+                    if ( logger != null )
+                    {
+                        logger.error( "Failed to build parent project for " + getId(), e );
+                    }
+                    parent = ERROR_BUILDING_PARENT;
                 }
             }
             else if ( model.getParent() != null )
@@ -375,11 +385,15 @@ public class MavenProject
                 }
                 catch ( ProjectBuildingException e )
                 {
-                    throw new IllegalStateException( "Failed to build parent project for " + getId(), e );
+                    if ( logger != null )
+                    {
+                        logger.error( "Failed to build parent project for " + getId(), e );
+                    }
+                    parent = ERROR_BUILDING_PARENT;
                 }
             }
         }
-        return parent;
+        return parent == ERROR_BUILDING_PARENT ? null : parent;
     }
 
     public void setParent( MavenProject parent )
diff --git a/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java b/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
index dbff28a..fffd819 100644
--- a/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/MavenProjectTest.java
@@ -23,11 +23,15 @@ import java.io.File;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.maven.lifecycle.internal.stub.LoggerStub;
 
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Profile;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
 
 public class MavenProjectTest
     extends AbstractMavenProjectTestCase
@@ -172,4 +176,35 @@ public class MavenProjectTest
         assertNotSame( "The list of active profiles should have been cloned too but is same",
                 activeProfilesOrig, activeProfilesClone);
     }
+
+    public void testInvalidParent() throws Exception
+    {
+        Parent parent = new Parent();
+        parent.setGroupId( "test-group" );
+        parent.setArtifactId( "parent-artifact" );
+        parent.setVersion( "1.0" );
+        Model model = new Model();
+        model.setParent( parent );
+        model.setArtifactId( "child-artifact" );
+        final AtomicInteger logged = new AtomicInteger();
+        class L extends LoggerStub
+        {
+            @Override
+            public void error( String s, Throwable throwable )
+            {
+                logged.incrementAndGet();
+            }
+        }
+        DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
+        session.setLocalRepositoryManager(new SimpleLocalRepositoryManager( getBasedir() ) );
+        ProjectBuildingRequest request = new DefaultProjectBuildingRequest();
+        request.setRepositorySession( session );
+        MavenProject project = new MavenProject( repositorySystem, projectBuilder, request, new L() );
+        project.setModel( model );
+        assertNull( project.getParent() );
+        assertEquals( 1, logged.get() );
+        assertNull( project.getParent() );
+        assertEquals( 1, logged.get() );
+    }
+
 }
