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 fd7ab40ddcf..fd0255780a7 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 @@ -1207,7 +1207,8 @@ private void deepCopy( MavenProject project ) // disown the parent // copy fields - setFile( project.getFile() ); + file = project.file; + basedir = project.basedir; // don't need a deep copy, they don't get modified or added/removed to/from - but make them unmodifiable to be // sure! 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 1bc75abe24b..02d64b2464c 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 @@ -177,6 +177,17 @@ public void testCloneWithActiveProfile() activeProfilesClone ); } + public void testCloneWithBaseDir() + throws Exception + { + File f = getFileForClasspathResource( "canonical-pom.xml" ); + MavenProject projectToClone = getProject( f ); + projectToClone.setPomFile( new File( new File( f.getParentFile(), "target" ), "flattened.xml" ) ); + MavenProject clonedProject = projectToClone.clone(); + assertEquals( "POM file is preserved across clone", projectToClone.getFile(), clonedProject.getFile() ); + assertEquals( "Base directory is preserved across clone", projectToClone.getBasedir(), clonedProject.getBasedir() ); + } + public void testUndefinedOutputDirectory() throws Exception {