mirror of https://github.com/apache/maven.git
[MNG-6723] MavenProject.getParentFile() not set when using ProjectBuilder.build()
This closes #273
This commit is contained in:
parent
2d0c3bc75b
commit
809cac2266
|
@ -976,6 +976,10 @@ public class DefaultProjectBuilder
|
|||
}
|
||||
}
|
||||
project.setParent( parent );
|
||||
if ( project.getParentFile() == null && parent != null )
|
||||
{
|
||||
project.setParentFile( parent.getFile() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in New Issue