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 2021/06/26 22:36:36 UTC

[maven] branch maven-3.8.x updated: [MNG-7170] Allow to associate pomFile/${basedir} with DefaultProjectBuilder.build(ModelSource, ...)

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 <mi...@redhat.com>
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 <rf...@apache.org>
    
    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 );