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

michaelo pushed a commit to branch maven-3.8.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.8.x by this push:
     new 5a89973  [MNG-7170] Allow to associate pomFile/${basedir} with 
DefaultProjectBuilder.build(ModelSource, ...)
5a89973 is described below

commit 5a8997312680a4b9c69a129801524691bc546c08
Author: Mickael Istria <[email protected]>
AuthorDate: Fri Jun 11 11:55:09 2021 +0200

    [MNG-7170] Allow to associate pomFile/${basedir} with 
DefaultProjectBuilder.build(ModelSource, ...)
    
    Actually a subset backport of MNG-5669 
(5cdb8332f99a36e5a1da202da43e3c7dfbb49322)
    
    Also-By: rfscholte <[email protected]>
    
    This closes #478
---
 .../apache/maven/project/ProjectBuilderTest.java   | 28 +++++++++++++++++++++-
 .../resources/projects/modelsourcebasedir/pom.xml  | 19 +++++++++++++++
 .../maven/model/building/DefaultModelBuilder.java  |  9 ++++++-
 3 files changed, 54 insertions(+), 2 deletions(-)

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 a318821..37d51cd 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
@@ -39,6 +39,8 @@ import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.building.FileModelSource;
 import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblem;
+import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelSource;
 import org.apache.maven.shared.utils.io.FileUtils;
 
@@ -83,6 +85,30 @@ public class ProjectBuilderTest
         assertNotNull( result.getProject().getParentFile() );
     }
 
+    public void testBuildFromModelSourceResolvesBasedir()
+        throws Exception
+    {
+        File pomFile = new File( 
"src/test/resources/projects/modelsourcebasedir/pom.xml" );
+        MavenSession mavenSession = createMavenSession( null );
+        ProjectBuildingRequest configuration = new 
DefaultProjectBuildingRequest();
+        configuration.setRepositorySession( 
mavenSession.getRepositorySession() );
+        ModelSource modelSource = new FileModelSource( pomFile );
+        ProjectBuildingResult result =
+            getContainer().lookup( 
org.apache.maven.project.ProjectBuilder.class ).build( modelSource, 
configuration );
+
+        assertEquals( pomFile.getAbsoluteFile(), 
result.getProject().getModel().getPomFile().getAbsoluteFile() );
+        int errors = 0;
+        for ( ModelProblem p : result.getProblems() )
+        {
+            if ( p.getSeverity() == Severity.ERROR )
+            {
+                errors++;
+            }
+        }
+        assertEquals( 0, errors );
+    }
+
+
     public void testVersionlessManagedDependency()
         throws Exception
     {
@@ -160,7 +186,7 @@ public class ProjectBuilderTest
             File parent = new File( tempDir.toFile(), "pom.xml" );
             String parentContent = FileUtils.fileRead( parent );
             parentContent = parentContent.replaceAll( 
"<packaging>pom</packaging>",
-                       
"<packaging>pom</packaging><properties><addedProperty>addedValue</addedProperty></properties>"
 );
+                    
"<packaging>pom</packaging><properties><addedProperty>addedValue</addedProperty></properties>"
 );
             FileUtils.fileWrite( parent, "UTF-8", parentContent );
             // re-build pom with modified parent
             ProjectBuildingResult result = projectBuilder.build( child, 
configuration );
diff --git a/maven-core/src/test/resources/projects/modelsourcebasedir/pom.xml 
b/maven-core/src/test/resources/projects/modelsourcebasedir/pom.xml
new file mode 100644
index 0000000..ec0f7d3
--- /dev/null
+++ b/maven-core/src/test/resources/projects/modelsourcebasedir/pom.xml
@@ -0,0 +1,19 @@
+<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>test.readparent</groupId>
+  <artifactId>local-parent</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0</version>
+
+  <dependencies>
+    <dependency>
+      <groupId>blah</groupId>
+      <artifactId>blah</artifactId>
+      <version>0.0.1-SNASPSHOT</version>
+      <scope>system</scope>
+      <systemPath>${basedir}/blah.jar</systemPath>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index f981944..a8568ef 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -617,7 +617,14 @@ public class DefaultModelBuilder
             throw problems.newModelBuildingException();
         }
 
-        model.setPomFile( pomFile );
+        if ( pomFile != null )
+        {
+            model.setPomFile( pomFile );
+        }
+        else if ( modelSource instanceof FileModelSource )
+        {
+            model.setPomFile( ( (FileModelSource) modelSource ).getFile() );
+        }
 
         problems.setSource( model );
         modelValidator.validateRawModel( model, request, problems );

Reply via email to