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
+}