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

olamy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-release.git


The following commit(s) were added to refs/heads/master by this push:
     new eb2ac920 [MRELEASE-1022] Use versions defined in `release.properties` 
when doing `release:prepare` (#111)
eb2ac920 is described below

commit eb2ac920b34a86555a17428d3fea1088bb2da29f
Author: Samuel Le Berrigaud <[email protected]>
AuthorDate: Tue Apr 26 03:49:45 2022 +0200

    [MRELEASE-1022] Use versions defined in `release.properties` when doing 
`release:prepare` (#111)
    
    this also works with version passed as arguments on the command line.
---
 .../shared/release/phase/MapVersionsPhase.java     |  53 ++++++++---
 .../shared/release/phase/MapVersionsPhaseTest.java | 102 ++++++++++++++++++++-
 2 files changed, 139 insertions(+), 16 deletions(-)

diff --git 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
index 3d405ebc..a04f027d 100644
--- 
a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
+++ 
b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
@@ -93,6 +93,10 @@ public class MapVersionsPhase
      */
     private Map<String, VersionPolicy> versionPolicies;
 
+    void setConvertToSnapshot( boolean convertToSnapshot )
+    {
+        this.convertToSnapshot = convertToSnapshot;
+    }
     void setPrompter( Prompter prompter )
     {
         this.prompter = prompter;
@@ -138,8 +142,13 @@ public class MapVersionsPhase
 
                 if ( convertToSnapshot )
                 {
+                    String subProjectNextVersion = 
releaseDescriptor.getProjectDevelopmentVersion( subProjectId );
                     String v;
-                    if ( ArtifactUtils.isSnapshot( subProject.getVersion() ) )
+                    if ( subProjectNextVersion != null )
+                    {
+                        v = subProjectNextVersion;
+                    }
+                    else if ( ArtifactUtils.isSnapshot( 
subProject.getVersion() ) )
                     {
                         v = nextVersion;
                     }
@@ -159,7 +168,15 @@ public class MapVersionsPhase
                 }
                 else
                 {
-                    releaseDescriptor.addReleaseVersion( subProjectId, 
nextVersion );
+                    String subProjectNextVersion = 
releaseDescriptor.getProjectReleaseVersion( subProjectId );
+                    if ( subProjectNextVersion != null )
+                    {
+                        releaseDescriptor.addReleaseVersion( subProjectId, 
subProjectNextVersion );
+                    }
+                    else
+                    {
+                        releaseDescriptor.addReleaseVersion( subProjectId, 
nextVersion );
+                    }
                 }
             }
         }
@@ -332,22 +349,36 @@ public class MapVersionsPhase
 
     private String getDevelopmentVersion( String projectId, ReleaseDescriptor 
releaseDescriptor )
     {
-        String defaultVersion = 
releaseDescriptor.getDefaultDevelopmentVersion();
-        if ( StringUtils.isEmpty( defaultVersion ) )
+        String projectVersion = 
releaseDescriptor.getProjectDevelopmentVersion( projectId );
+
+        if ( StringUtils.isEmpty( projectVersion ) )
         {
-            defaultVersion = releaseDescriptor.getProjectDevelopmentVersion( 
projectId );
+            projectVersion = releaseDescriptor.getDefaultDevelopmentVersion();
         }
-        return defaultVersion;
+
+        if ( StringUtils.isEmpty( projectVersion ) )
+        {
+            return null;
+        }
+
+        return projectVersion;
     }
 
     private String getReleaseVersion( String projectId, ReleaseDescriptor 
releaseDescriptor )
     {
-        String nextVersion = releaseDescriptor.getDefaultReleaseVersion();
-        if ( StringUtils.isEmpty( nextVersion ) )
+        String projectVersion = releaseDescriptor.getProjectReleaseVersion( 
projectId );
+
+        if ( StringUtils.isEmpty( projectVersion ) )
         {
-            nextVersion = releaseDescriptor.getProjectReleaseVersion( 
projectId );
+            projectVersion = releaseDescriptor.getDefaultReleaseVersion();
         }
-        return nextVersion;
+
+        if ( StringUtils.isEmpty( projectVersion ) )
+        {
+            return null;
+        }
+
+        return projectVersion;
     }
 
 
@@ -387,7 +418,7 @@ public class MapVersionsPhase
 
         return result;
     }
-    
+
     private ResourceBundle getResourceBundle( Locale locale )
     {
         return ResourceBundle.getBundle( "release-messages", locale, 
MapVersionsPhase.class.getClassLoader() );
diff --git 
a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
 
b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
index b38f4ce5..00a19b50 100644
--- 
a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
+++ 
b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -253,6 +254,97 @@ public class MapVersionsPhaseTest
                       ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectReleaseVersion("groupId:artifactId") );
     }
 
+    /**
+     * MRELEASE-1022: don't ignore command line (or release.properties) 
versions when auto-versioning sub-modules
+     */
+    @Test
+    public void testMapReleaseVersionsForSubModuleWithExplicitVersion()
+        throws Exception
+    {
+        // prepare
+        MavenProject rootProject = createProject("rootArtifactId", "SNAPSHOT");
+        rootProject.setExecutionRoot(true);
+
+        final MavenProject moduleProject = createProject("artifactId", 
"SNAPSHOT");
+        moduleProject.setParent(rootProject);
+
+        List<MavenProject> reactorProjects = Arrays.asList( rootProject, 
moduleProject );
+
+        MapVersionsPhase phase = (MapVersionsPhase) lookup( 
ReleasePhase.class, TEST_MAP_RELEASE_VERSIONS );
+
+        ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder()
+            .setInteractive(false) // batch mode
+            .setAutoVersionSubmodules( true )
+            .addReleaseVersion( "groupId:artifactId", "2.0" );
+
+        phase.setPrompter( mockPrompter );
+
+        // execute
+        phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new 
DefaultReleaseEnvironment(), reactorProjects );
+
+        // verify
+        assertEquals( "Check mapped versions", "1.0",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectReleaseVersion("groupId:rootArtifactId") );
+        assertEquals( "Check mapped versions", "2.0",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectReleaseVersion("groupId:artifactId") );
+
+        // execute
+        phase.simulate( ReleaseUtils.buildReleaseDescriptor( builder ), new 
DefaultReleaseEnvironment(), reactorProjects );
+
+        // verify
+        assertEquals( "Check mapped versions", "1.0",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectReleaseVersion("groupId:rootArtifactId") );
+        assertEquals( "Check mapped versions", "2.0",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectReleaseVersion("groupId:artifactId") );
+    }
+
+    /**
+     * MRELEASE-1022: don't ignore command line (or release.properties) 
versions when auto-versioning sub-modules
+     */
+    @Test
+    public void testMapDevelopmentVersionsForSubModuleWithExplicitVersion()
+        throws Exception
+    {
+        // prepare
+        MavenProject rootProject = createProject("rootArtifactId", "1.0");
+        rootProject.setExecutionRoot(true);
+
+        final MavenProject moduleProject = createProject("artifactId", "1.0");
+        moduleProject.setParent(rootProject);
+
+        List<MavenProject> reactorProjects = Arrays.asList( rootProject, 
moduleProject );
+
+        MapVersionsPhase phase = (MapVersionsPhase) lookup( 
ReleasePhase.class, TEST_MAP_RELEASE_VERSIONS );
+
+        ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder()
+            .setInteractive( false ) // batch mode
+            .setAutoVersionSubmodules( true )
+            .setDefaultDevelopmentVersion( "1.1-SNAPSHOT" )
+            .addDevelopmentVersion( "groupId:artifactId", "2.0-SNAPSHOT" );
+
+        phase.setConvertToSnapshot( true );
+        phase.setPrompter( mockPrompter );
+
+
+        // execute
+        phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new 
DefaultReleaseEnvironment(), reactorProjects );
+
+        // verify
+        assertEquals( "Check mapped versions", "1.1-SNAPSHOT",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectDevelopmentVersion("groupId:rootArtifactId") );
+        assertEquals( "Check mapped versions", "2.0-SNAPSHOT",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectDevelopmentVersion("groupId:artifactId") );
+
+        // execute
+        phase.simulate( ReleaseUtils.buildReleaseDescriptor( builder ), new 
DefaultReleaseEnvironment(), reactorProjects );
+
+        // verify
+        assertEquals( "Check mapped versions", "1.1-SNAPSHOT",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectDevelopmentVersion("groupId:rootArtifactId") );
+        assertEquals( "Check mapped versions", "2.0-SNAPSHOT",
+                      ReleaseUtils.buildReleaseDescriptor( builder 
).getProjectDevelopmentVersion("groupId:artifactId") );
+    }
+
     @Test
     public void testExecuteSnapshotNonInteractive_MapRelease()
         throws Exception
@@ -2131,11 +2223,11 @@ public class MapVersionsPhaseTest
         builder.setProjectVersionPolicyId( "UNKNOWN" );
 
         // test
-        ReleaseExecutionException e = assertThrows( 
ReleaseExecutionException.class, 
+        ReleaseExecutionException e = assertThrows( 
ReleaseExecutionException.class,
                 () -> phase.execute( ReleaseUtils.buildReleaseDescriptor( 
builder ), new DefaultReleaseEnvironment(), reactorProjects ) );
         assertThat( e.getCause(), CoreMatchers.instanceOf( 
PolicyException.class ) );
     }
-    
+
     @Test
     public void testUpdateBranchInvalidDefaultReleaseVersion_NonInteractive()
         throws Exception
@@ -2160,7 +2252,7 @@ public class MapVersionsPhaseTest
             assertEquals( "3.0 is invalid, expected a snapshot", 
e.getMessage() );
         }
     }
-    
+
     @Test
     public void testUpdateReleaseInvalidDefaultReleaseVersion_NonInteractive()
         throws Exception
@@ -2184,7 +2276,7 @@ public class MapVersionsPhaseTest
             assertEquals( "3.0-SNAPSHOT is invalid, expected a non-snapshot", 
e.getMessage() );
         }
     }
-    
+
     @Test
     public void 
testUpdateDevelopmentInvalidDefaultDevelopmentVersion_NonInteractive()
         throws Exception
@@ -2217,4 +2309,4 @@ public class MapVersionsPhaseTest
         model.setVersion( version );
         return new MavenProject( model );
     }
-}
\ No newline at end of file
+}

Reply via email to