You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2019/04/16 11:28:10 UTC

[maven] branch master updated: [MNG-6405] Fix basedir in MavenProject.deepCopy (#225)

This is an automated email from the ASF dual-hosted git repository.

olamy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new 0940c7c  [MNG-6405] Fix basedir in MavenProject.deepCopy (#225)
0940c7c is described below

commit 0940c7c9730eac23fd8598f3fb51520ee774761b
Author: Jesse Glick <jg...@cloudbees.com>
AuthorDate: Tue Apr 16 07:28:03 2019 -0400

    [MNG-6405] Fix basedir in MavenProject.deepCopy (#225)
    
    * [MNG-6405] Fix basedir in MavenProject.deepCopy.
    
    * Reproduced bug in test.
    Failure without patch:
    junit.framework.AssertionFailedError: Base directory is preserved across clone expected:<…/maven-core/target/test-classes> but was:<…/maven-core/target/test-classes/target>
    	at org.apache.maven.project.MavenProjectTest.testCloneWithBaseDir(MavenProjectTest.java:188)
    
    * Code style. Not enforced in tests during build?
---
 .../src/main/java/org/apache/maven/project/MavenProject.java  |  3 ++-
 .../test/java/org/apache/maven/project/MavenProjectTest.java  | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

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 fd7ab40..fd02557 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 @@ public class MavenProject
         // 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 1bc75ab..02d64b2 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 class MavenProjectTest
                        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
     {