You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/02/01 13:35:21 UTC
[maven] branch master updated: [MNG-6727] Using version range in parent and CI Friendly Version fails
This is an automated email from the ASF dual-hosted git repository.
gnodet 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 1d47323 [MNG-6727] Using version range in parent and CI Friendly Version fails
1d47323 is described below
commit 1d473233f21b63f351ded6904f4f9f98db3faaf1
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Feb 1 14:26:54 2022 +0100
[MNG-6727] Using version range in parent and CI Friendly Version fails
---
.../project/DefaultMavenProjectBuilderTest.java | 136 ++++++++++++++++++++-
.../pom.xml | 4 +-
.../pom.xml | 4 +-
.../pom.xml | 4 +-
.../pom.xml | 4 +-
.../pom.xml | 6 +-
.../child/pom.xml | 4 +-
.../pom.xml | 0
.../child/pom.xml | 4 +-
.../pom.xml | 0
.../child/pom.xml | 6 +-
.../pom.xml | 0
.../maven/model/building/DefaultModelBuilder.java | 20 ++-
13 files changed, 168 insertions(+), 24 deletions(-)
diff --git a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 727f28d..a2ca999 100644
--- a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
import java.io.File;
import java.io.InputStream;
@@ -249,11 +250,11 @@ public class DefaultMavenProjectBuilderTest
* @throws Exception in case of issue
*/
@Test
- public void testBuildParentVersionRangeLocallyWithChildVersionExpression() throws Exception
+ public void testBuildParentVersionRangeLocallyWithChildProjectVersionExpression() throws Exception
{
File f1 =
getTestFile(
- "src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml" );
+ "src/test/resources/projects/parent-version-range-local-child-project-version-expression/child/pom.xml" );
ProjectBuildingException e = assertThrows(
ProjectBuildingException.class,
@@ -261,7 +262,47 @@ public class DefaultMavenProjectBuilderTest
"Expected 'ProjectBuildingException' not thrown." );
assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
}
+
+ /**
+ * Tests whether local version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeLocallyWithChildProjectParentVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/child/pom.xml" );
+
+ try
+ {
+ getProject( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether local version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeLocallyWithChildRevisionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-local-child-revision-expression/child/pom.xml" );
+ MavenProject mp = this.getProjectFromRemoteRepository( f1 );
+
+ assertEquals("1.0-SNAPSHOT", mp.getVersion());
+
+ }
+
/**
* Tests whether external version range parent references are build correctly.
*
@@ -307,11 +348,11 @@ public class DefaultMavenProjectBuilderTest
* @throws Exception in case of issue
*/
@Test
- public void testBuildParentVersionRangeExternallyWithChildVersionExpression() throws Exception
+ public void testBuildParentVersionRangeExternallyWithChildProjectVersionExpression() throws Exception
{
File f1 =
getTestFile(
- "src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml" );
+ "src/test/resources/projects/parent-version-range-external-child-project-version-expression/pom.xml" );
ProjectBuildingException e = assertThrows(
ProjectBuildingException.class,
@@ -350,4 +391,91 @@ public class DefaultMavenProjectBuilderTest
assertThat( project.getName(), is( "PROJECT NAME" ) );
}
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithChildPomVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-pom-version-expression/pom.xml" );
+
+ try
+ {
+ this.getProjectFromRemoteRepository( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithChildPomParentVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-pom-parent-version-expression/pom.xml" );
+
+ try
+ {
+ this.getProjectFromRemoteRepository( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithChildProjectParentVersionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-project-parent-version-expression/pom.xml" );
+
+ try
+ {
+ this.getProjectFromRemoteRepository( f1 );
+ fail( "Expected 'ProjectBuildingException' not thrown." );
+ }
+ catch ( final ProjectBuildingException e )
+ {
+ assertNotNull( e.getMessage() );
+ assertThat( e.getMessage(), containsString( "Version must be a constant" ) );
+ }
+ }
+
+ /**
+ * Tests whether external version range parent references are build correctly.
+ *
+ * @throws Exception
+ */
+ public void testBuildParentVersionRangeExternallyWithChildRevisionExpression() throws Exception
+ {
+ File f1 =
+ getTestFile(
+ "src/test/resources/projects/parent-version-range-external-child-revision-expression/pom.xml" );
+
+
+ MavenProject mp = this.getProjectFromRemoteRepository( f1 );
+
+ assertEquals("1.0-SNAPSHOT", mp.getVersion());
+
+
+ }
}
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-pom-parent-version-expression/pom.xml
similarity index 67%
copy from maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-external-child-pom-parent-version-expression/pom.xml
index d07ad6e..b37e54a 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-pom-parent-version-expression/pom.xml
@@ -6,7 +6,7 @@
<version>[1,1]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.parent.version} due to version range. -->
+ <version>${pom.parent.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-pom-version-expression/pom.xml
similarity index 69%
copy from maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-external-child-pom-version-expression/pom.xml
index d07ad6e..bd30a9a 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-pom-version-expression/pom.xml
@@ -6,7 +6,7 @@
<version>[1,1]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.version} due to version range. -->
+ <version>${project.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-project-parent-version-expression/pom.xml
similarity index 67%
copy from maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-external-child-project-parent-version-expression/pom.xml
index d07ad6e..a8cf950 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-project-parent-version-expression/pom.xml
@@ -6,7 +6,7 @@
<version>[1,1]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.parent.version} due to version range. -->
+ <version>${project.parent.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-project-version-expression/pom.xml
similarity index 69%
copy from maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-external-child-project-version-expression/pom.xml
index d07ad6e..bd30a9a 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-project-version-expression/pom.xml
@@ -6,7 +6,7 @@
<version>[1,1]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.version} due to version range. -->
+ <version>${project.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-external-child-revision-expression/pom.xml
similarity index 69%
rename from maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
rename to maven-core/src/test/resources/projects/parent-version-range-external-child-revision-expression/pom.xml
index d07ad6e..aa724d8 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-external-child-version-expression/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-external-child-revision-expression/pom.xml
@@ -6,7 +6,9 @@
<version>[1,1]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <version>${revision}</version>
<packaging>pom</packaging>
+ <properties>
+ <revision>1.0-SNAPSHOT</revision>
+ </properties>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/child/pom.xml
similarity index 68%
copy from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/child/pom.xml
index 066a11e..ac42c93 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/child/pom.xml
@@ -6,7 +6,7 @@
<version>[1,10]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.parent.version} due to version range. -->
+ <version>${project.parent.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/pom.xml
similarity index 100%
copy from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-local-child-project-parent-version-expression/pom.xml
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-version-expression/child/pom.xml
similarity index 70%
copy from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-local-child-project-version-expression/child/pom.xml
index 066a11e..1435070 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-version-expression/child/pom.xml
@@ -6,7 +6,7 @@
<version>[1,10]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <!-- Must not use ${project.version} due to version range. -->
+ <version>${project.version}</version>
<packaging>pom</packaging>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-project-version-expression/pom.xml
similarity index 100%
copy from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
copy to maven-core/src/test/resources/projects/parent-version-range-local-child-project-version-expression/pom.xml
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-revision-expression/child/pom.xml
similarity index 70%
rename from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
rename to maven-core/src/test/resources/projects/parent-version-range-local-child-revision-expression/child/pom.xml
index 066a11e..b29b5d2 100644
--- a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/child/pom.xml
+++ b/maven-core/src/test/resources/projects/parent-version-range-local-child-revision-expression/child/pom.xml
@@ -6,7 +6,9 @@
<version>[1,10]</version>
</parent>
<artifactId>child</artifactId>
- <!-- Must not use expressions from parent due to version range. -->
- <version>${some.property}</version>
+ <version>${revision}</version>
<packaging>pom</packaging>
+ <properties>
+ <revision>1.0-SNAPSHOT</revision>
+ </properties>
</project>
diff --git a/maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml b/maven-core/src/test/resources/projects/parent-version-range-local-child-revision-expression/pom.xml
similarity index 100%
rename from maven-core/src/test/resources/projects/parent-version-range-local-child-version-expression/pom.xml
rename to maven-core/src/test/resources/projects/parent-version-range-local-child-revision-expression/pom.xml
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 d09c705..de84b90 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
@@ -1320,7 +1320,9 @@ public class DefaultModelBuilder
}
// Validate versions aren't inherited when using parent ranges the same way as when read externally.
- if ( childModel.getVersion() == null )
+ String rawChildModelVersion = childModel.getVersion();
+
+ if ( rawChildModelVersion == null )
{
// Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
@@ -1329,7 +1331,7 @@ public class DefaultModelBuilder
}
else
{
- if ( childModel.getVersion().contains( "${" ) )
+ if ( rawChildVersionReferencesParent( rawChildModelVersion ) )
{
// Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
@@ -1360,6 +1362,14 @@ public class DefaultModelBuilder
return new ModelData( candidateSource, candidateModel, groupId, artifactId, version );
}
+ private boolean rawChildVersionReferencesParent( String rawChildModelVersion )
+ {
+ return rawChildModelVersion.equals( "${pom.version}" )
+ || rawChildModelVersion.equals( "${project.version}" )
+ || rawChildModelVersion.equals( "${pom.parent.version}" )
+ || rawChildModelVersion.equals( "${project.parent.version}" );
+ }
+
private ModelSource getParentPomFile( Model childModel, Source source )
{
if ( !( source instanceof ModelSource2 ) )
@@ -1441,7 +1451,9 @@ public class DefaultModelBuilder
if ( !parent.getVersion().equals( version ) )
{
- if ( childModel.getVersion() == null )
+ String rawChildModelVersion = childModel.getVersion();
+
+ if ( rawChildModelVersion == null )
{
// Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )
@@ -1450,7 +1462,7 @@ public class DefaultModelBuilder
}
else
{
- if ( childModel.getVersion().contains( "${" ) )
+ if ( rawChildVersionReferencesParent( rawChildModelVersion ) )
{
// Message below is checked for in the MNG-2199 core IT.
problems.add( new ModelProblemCollectorRequest( Severity.FATAL, Version.V31 )