You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2022/04/26 01:49:50 UTC
[maven-release] branch master updated: [MRELEASE-1022] Use versions defined in `release.properties` when doing `release:prepare` (#111)
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 <sa...@leberrigaud.org>
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
+}