Author: evenisse
Date: Thu Apr 26 03:01:32 2007
New Revision: 532690
URL: http://svn.apache.org/viewvc?view=rev&rev=532690
Log:
[MRELEASE-157] Allow to share version for multi-module releases
Submitted by: Tom Schneider
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java?view=diff&rev=532690&r1=532689&r2=532690
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
Thu Apr 26 03:01:32 2007
@@ -44,6 +44,7 @@
{
// Overridden if configured from the caller
mergeInto.setScmSourceUrl( mergeOverride( mergeInto.getScmSourceUrl(),
toBeMerged.getScmSourceUrl() ) );
+ mergeInto.setScmCommentPrefix( mergeOverride(
mergeInto.getScmCommentPrefix(), toBeMerged.getScmCommentPrefix()));
mergeInto.setScmReleaseLabel(
mergeOverride( mergeInto.getScmReleaseLabel(),
toBeMerged.getScmReleaseLabel() ) );
mergeInto.setScmTagBase( mergeOverride( mergeInto.getScmTagBase(),
toBeMerged.getScmTagBase() ) );
@@ -63,6 +64,10 @@
mergeInto.setAddSchema( toBeMerged.isAddSchema() );
mergeInto.setGenerateReleasePoms( toBeMerged.isGenerateReleasePoms() );
mergeInto.setInteractive( toBeMerged.isInteractive() );
+ mergeInto.setUpdateDependencies( toBeMerged.isUpdateDependencies());
+ mergeInto.setCommitByProject( toBeMerged.isCommitByProject());
+
+ mergeInto.setAutoVersionSubmodules(
toBeMerged.isAutoVersionSubmodules() );
// These must be overridden, as they are not stored
mergeInto.setWorkingDirectory(
Modified:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java?view=diff&rev=532690&r1=532689&r2=532690
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
(original)
+++
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
Thu Apr 26 03:01:32 2007
@@ -25,6 +25,7 @@
import org.apache.maven.shared.release.ReleaseExecutionException;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.util.ReleaseUtil;
import org.apache.maven.shared.release.versions.DefaultVersionInfo;
import org.apache.maven.shared.release.versions.VersionInfo;
import org.apache.maven.shared.release.versions.VersionParseException;
@@ -63,108 +64,168 @@
{
ReleaseResult result = new ReleaseResult();
- for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+ MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects
);
+
+ if ( releaseDescriptor.isAutoVersionSubmodules() &&
ArtifactUtils.isSnapshot( rootProject.getVersion() ) )
{
- MavenProject project = (MavenProject) i.next();
+ // get the root project
+ MavenProject project = rootProject;
String projectId = ArtifactUtils.versionlessKey(
project.getGroupId(), project.getArtifactId() );
- VersionInfo version = null;
- try
+ String nextVersion = getNextVersion( project, projectId,
releaseDescriptor, result );
+
+ if ( convertToSnapshot )
{
- version = new DefaultVersionInfo( project.getVersion() );
+ releaseDescriptor.mapDevelopmentVersion( projectId,
nextVersion );
}
- catch ( VersionParseException e )
+ else
{
- String msg = "Error parsing version, cannot determine next
version: " + e.getMessage();
- if ( releaseDescriptor.isInteractive() )
+ releaseDescriptor.mapReleaseVersion( projectId, nextVersion );
+ }
+
+ for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+ {
+ MavenProject subProject = (MavenProject) i.next();
+ String subProjectId =
+ ArtifactUtils.versionlessKey( subProject.getGroupId(),
subProject.getArtifactId() );
+ if ( convertToSnapshot )
{
- logWarn( result, msg );
- logDebug( result, e.getMessage(), e );
+ releaseDescriptor.mapDevelopmentVersion( subProjectId,
nextVersion );
}
else
{
- // cannot proceed without a next value in batch mode
- throw new ReleaseExecutionException( msg, e );
+ releaseDescriptor.mapReleaseVersion( subProjectId,
nextVersion );
}
}
-
- try
+ }
+ else
+ {
+ for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
{
+ MavenProject project = (MavenProject) i.next();
+
+ String projectId = ArtifactUtils.versionlessKey(
project.getGroupId(), project.getArtifactId() );
+
+ String nextVersion = getNextVersion( project, projectId,
releaseDescriptor, result );
+
if ( convertToSnapshot )
{
- String nextVersion = null;
- if ( version != null )
+ releaseDescriptor.mapDevelopmentVersion( projectId,
nextVersion );
+ }
+ else
+ {
+ if ( ArtifactUtils.isSnapshot( project.getVersion() ) )
{
- VersionInfo versionInfo = version.getNextVersion();
- if ( versionInfo != null )
- {
- nextVersion =
versionInfo.getSnapshotVersionString();
- }
- else
- {
- nextVersion = "1.0-SNAPSHOT";
- }
+ releaseDescriptor.mapReleaseVersion( projectId,
nextVersion );
+ }
+ else
+ {
+ releaseDescriptor.mapReleaseVersion( projectId,
project.getVersion() );
}
+ }
+ }
+ }
- if ( releaseDescriptor.isInteractive() )
+ result.setResultCode( ReleaseResult.SUCCESS );
+
+ return result;
+ }
+
+ private String getNextVersion( MavenProject project, String projectId,
ReleaseDescriptor releaseDescriptor,
+ ReleaseResult result )
+ throws ReleaseExecutionException
+ {
+ String nextVersion = null;
+
+ VersionInfo version = null;
+ try
+ {
+ version = new DefaultVersionInfo( project.getVersion() );
+ }
+ catch ( VersionParseException e )
+ {
+ String msg = "Error parsing version, cannot determine next
version: " + e.getMessage();
+ if ( releaseDescriptor.isInteractive() )
+ {
+ logWarn( result, msg );
+ logDebug( result, e.getMessage(), e );
+ }
+ else
+ {
+ // cannot proceed without a next value in batch mode
+ throw new ReleaseExecutionException( msg, e );
+ }
+ }
+
+ try
+ {
+ if ( convertToSnapshot )
+ {
+ if ( version != null )
+ {
+ VersionInfo versionInfo = version.getNextVersion();
+ if ( versionInfo != null )
{
- nextVersion = prompter.prompt( "What is the new
development version for \"" +
- project.getName() + "\"? (" + projectId + ")",
nextVersion );
+ nextVersion = versionInfo.getSnapshotVersionString();
}
else
{
- Map devVersions =
releaseDescriptor.getDevelopmentVersions();
- if ( devVersions.containsKey( projectId ) )
- {
- nextVersion = devVersions.remove( projectId
).toString();
- }
+ nextVersion = "1.0-SNAPSHOT";
}
+ }
- releaseDescriptor.mapDevelopmentVersion( projectId,
nextVersion );
+ if ( releaseDescriptor.isInteractive() )
+ {
+ nextVersion = prompter.prompt(
+ "What is the new development version for \"" +
project.getName() + "\"? (" + projectId + ")",
+ nextVersion );
}
else
{
- if ( ArtifactUtils.isSnapshot( project.getVersion() ) )
+ Map devVersions =
releaseDescriptor.getDevelopmentVersions();
+ if ( devVersions.containsKey( projectId ) )
{
- String nextVersion = null;
- if ( version != null )
- {
- nextVersion = version.getReleaseVersionString();
- }
-
- if ( releaseDescriptor.isInteractive() )
- {
- nextVersion = prompter.prompt(
- "What is the release version for \"" +
project.getName() + "\"? (" + projectId + ")",
- nextVersion );
- }
- else
- {
- Map relVersions =
releaseDescriptor.getReleaseVersions();
- if ( relVersions.containsKey( projectId ) )
- {
- nextVersion = relVersions.remove( projectId
).toString();
- }
- }
+ nextVersion = devVersions.remove( projectId
).toString();
+ }
+ }
+ }
+ else
+ {
+ if ( ArtifactUtils.isSnapshot( project.getVersion() ) )
+ {
+ if ( version != null )
+ {
+ nextVersion = version.getReleaseVersionString();
+ }
- releaseDescriptor.mapReleaseVersion( projectId,
nextVersion );
+ if ( releaseDescriptor.isInteractive() )
+ {
+ nextVersion = prompter.prompt(
+ "What is the release version for \"" +
project.getName() + "\"? (" + projectId + ")",
+ nextVersion );
}
else
{
- releaseDescriptor.mapReleaseVersion( projectId,
project.getVersion() );
+ Map relVersions =
releaseDescriptor.getReleaseVersions();
+ if ( relVersions.containsKey( projectId ) )
+ {
+ nextVersion = relVersions.remove( projectId
).toString();
+ }
}
}
- }
- catch ( PrompterException e )
- {
- throw new ReleaseExecutionException( "Error reading version
from input handler: " + e.getMessage(), e );
+ else
+ {
+ nextVersion = project.getVersion();
+ }
}
}
+ catch ( PrompterException e )
+ {
+ throw new ReleaseExecutionException( "Error reading version from
input handler: " + e.getMessage(), e );
+ }
- result.setResultCode( ReleaseResult.SUCCESS );
-
- return result;
+ return nextVersion;
}
public ReleaseResult simulate( ReleaseDescriptor releaseDescriptor,
Settings settings, List reactorProjects )
@@ -179,5 +240,4 @@
return result;
}
-
}
Modified:
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo?view=diff&rev=532690&r1=532689&r2=532690
==============================================================================
---
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
(original)
+++
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
Thu Apr 26 03:01:32 2007
@@ -227,6 +227,14 @@
</description>
</field>
<field>
+ <name>autoVersionSubmodules</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <description>
+ Whether to use the parent pom version for submodule verstions.
+ </description>
+ </field>
+ <field>
<name>interactive</name>
<version>1.0.0</version>
<type>boolean</type>
Modified:
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
URL:
http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?view=diff&rev=532690&r1=532689&r2=532690
==============================================================================
---
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
(original)
+++
maven/release/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
Thu Apr 26 03:01:32 2007
@@ -70,6 +70,14 @@
private boolean updateDependencies;
/**
+ * Whether to automatically assign submodules the parent version. If set
to false,
+ * the user will be prompted for the version of each submodules.
+ *
+ * @parameter expression="${autoVersionSubmodules}" default-value="false"
+ */
+ private boolean autoVersionSubmodules;
+
+ /**
* Dry run: don't checkin or tag anything in the scm repository, or modify
the checkout.
* Running <code>mvn -DdryRun=true release:prepare</code> is useful in
order to check that modifications to
* poms and scm operations (only listed on the console) are working as
expected.
@@ -111,7 +119,7 @@
config.setPreparationGoals( preparationGoals );
config.setCommitByProject( commitByProject );
config.setUpdateDependencies( updateDependencies );
-
+ config.setAutoVersionSubmodules( autoVersionSubmodules );
try
{
releaseManager.prepare( config, settings, reactorProjects, resume,
dryRun );