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 );