You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2019/07/26 20:17:25 UTC
[maven] branch master updated: [MNG-6723]
MavenProject.getParentFile() not set when using ProjectBuilder.build()
This is an automated email from the ASF dual-hosted git repository.
michaelo 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 809cac2 [MNG-6723] MavenProject.getParentFile() not set when using ProjectBuilder.build()
809cac2 is described below
commit 809cac22661ab616340b9507ba7542b534ea9578
Author: Mickael Istria <mi...@redhat.com>
AuthorDate: Fri Jul 19 14:16:16 2019 +0200
[MNG-6723] MavenProject.getParentFile() not set when using ProjectBuilder.build()
This closes #273
---
.../maven/project/DefaultProjectBuilder.java | 4 ++
.../apache/maven/project/ProjectBuilderTest.java | 61 ++++++++++++++++++++++
.../project-builder/MNG-6723/child/pom.xml | 11 ++++
.../test/projects/project-builder/MNG-6723/pom.xml | 11 ++++
4 files changed, 87 insertions(+)
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index 400b716..51c90cc 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -976,6 +976,10 @@ public class DefaultProjectBuilder
}
}
project.setParent( parent );
+ if ( project.getParentFile() == null && parent != null )
+ {
+ project.setParentFile( parent.getFile() );
+ }
}
}
diff --git a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index a7ed939..95c3149 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -20,6 +20,7 @@ package org.apache.maven.project;
*/
import java.io.File;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
@@ -245,4 +246,64 @@ public class ProjectBuilderTest
}
}
+ public void testReadParentAndChildWithRegularVersionSetParentFile()
+ throws Exception
+ {
+ List<File> toRead = new ArrayList<>( 2 );
+ File parentPom = getProject( "MNG-6723" );
+ toRead.add( parentPom );
+ toRead.add( new File( parentPom.getParentFile(), "child/pom.xml" ) );
+ MavenSession mavenSession = createMavenSession( null );
+ ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
+ configuration.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
+ configuration.setRepositorySession( mavenSession.getRepositorySession() );
+ org.apache.maven.project.ProjectBuilder projectBuilder =
+ lookup( org.apache.maven.project.ProjectBuilder.class );
+
+ // read poms separately
+ boolean parentFileWasFoundOnChild = false;
+ for ( File file : toRead )
+ {
+ List<ProjectBuildingResult> results = projectBuilder.build( Collections.singletonList( file ), false, configuration );
+ assertResultShowNoError( results );
+ MavenProject project = findChildProject( results );
+ if ( project != null )
+ {
+ assertEquals( parentPom, project.getParentFile() );
+ parentFileWasFoundOnChild = true;
+ }
+ }
+ assertTrue( parentFileWasFoundOnChild );
+
+ // read projects together
+ List<ProjectBuildingResult> results = projectBuilder.build( toRead, false, configuration );
+ assertResultShowNoError( results );
+ assertEquals( parentPom, findChildProject( results ).getParentFile() );
+ Collections.reverse( toRead );
+ results = projectBuilder.build( toRead, false, configuration );
+ assertResultShowNoError( results );
+ assertEquals( parentPom, findChildProject( results ).getParentFile() );
+ }
+
+ private MavenProject findChildProject( List<ProjectBuildingResult> results )
+ {
+ for ( ProjectBuildingResult result : results )
+ {
+ if ( result.getPomFile().getParentFile().getName().equals( "child" ) )
+ {
+ return result.getProject();
+ }
+ }
+ return null;
+ }
+
+ private void assertResultShowNoError(List<ProjectBuildingResult> results)
+ {
+ for ( ProjectBuildingResult result : results )
+ {
+ assertTrue( result.getProblems().isEmpty() );
+ assertNotNull( result.getProject() );
+ }
+ }
+
}
diff --git a/maven-core/src/test/projects/project-builder/MNG-6723/child/pom.xml b/maven-core/src/test/projects/project-builder/MNG-6723/child/pom.xml
new file mode 100644
index 0000000..20284eb
--- /dev/null
+++ b/maven-core/src/test/projects/project-builder/MNG-6723/child/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>example.eclipse-548652</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <artifactId>child</artifactId>
+ <packaging>jar</packaging>
+</project>
diff --git a/maven-core/src/test/projects/project-builder/MNG-6723/pom.xml b/maven-core/src/test/projects/project-builder/MNG-6723/pom.xml
new file mode 100644
index 0000000..e21f824
--- /dev/null
+++ b/maven-core/src/test/projects/project-builder/MNG-6723/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>example.eclipse-548652</groupId>
+ <artifactId>parent</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <module>child</module>
+ </modules>
+</project>