Author: simonetripodi Date: Tue Apr 8 16:19:17 2014 New Revision: 1585772 URL: http://svn.apache.org/r1585772 Log: MRELEASE-431 - Configuration of policy for calculating next (release) version
release:prepare MOJO is now able to configure the VersionPolicy ID Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java 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-plugin/pom.xml 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/PropertiesReleaseDescriptorStore.java URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java?rev=1585772&r1=1585771&r2=1585772&view=diff ============================================================================== --- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java (original) +++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java Tue Apr 8 16:19:17 2014 @@ -53,16 +53,16 @@ public class PropertiesReleaseDescriptor extends AbstractLogEnabled implements ReleaseDescriptorStore { - + /** * When this plugin requires Maven 3.0 as minimum, this component can be removed and o.a.m.s.c.SettingsDecrypter be * used instead. - * + * * @plexus.requirement role="org.sonatype.plexus.components.sec.dispatcher.SecDispatcher" role-hint="mng-4384" */ - + private DefaultSecDispatcher secDispatcher; - + public ReleaseDescriptor read( ReleaseDescriptor mergeDescriptor ) throws ReleaseDescriptorStoreException { @@ -226,6 +226,10 @@ public class PropertiesReleaseDescriptor { properties.setProperty( "completionGoals", config.getCompletionGoals() ); } + if ( config.getProjectVersionPolicyId() != null ) + { + properties.setProperty( "projectVersionPolicyId", config.getProjectVersionPolicyId() ); + } properties.setProperty( "exec.snapshotReleasePluginAllowed", Boolean.toString( config.isSnapshotReleasePluginAllowed() ) ); @@ -336,7 +340,7 @@ public class PropertiesReleaseDescriptor { return new File( mergeDescriptor.getWorkingDirectory(), "release.properties" ); } - + // From org.apache.maven.cli.MavenCli.encryption(CliRequest) private String encryptAndDecorate( String passwd ) throws IllegalStateException, SecDispatcherException, PlexusCipherException { 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?rev=1585772&r1=1585771&r2=1585772&view=diff ============================================================================== --- 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 Tue Apr 8 16:19:17 2014 @@ -120,6 +120,9 @@ public class ReleaseUtils // Not overridden - not configured from caller mergeInto.setCompletedPhase( mergeDefault( mergeInto.getCompletedPhase(), toBeMerged.getCompletedPhase() ) ); + mergeInto.setProjectVersionPolicyId( + mergeDefault( mergeInto.getProjectVersionPolicyId(), toBeMerged.getProjectVersionPolicyId() ) ); + return mergeInto; } @@ -132,7 +135,7 @@ public class ReleaseUtils { return thisValue != null ? thisValue : mergeValue; } - + private static boolean mergeOverride( boolean thisValue, boolean mergeValue, boolean defaultValue ) { return mergeValue != defaultValue ? mergeValue : thisValue; @@ -158,6 +161,7 @@ public class ReleaseUtils releaseDescriptor.setPomFileName( properties.getProperty( "exec.pomFileName" ) ); releaseDescriptor.setPreparationGoals( properties.getProperty( "preparationGoals" ) ); releaseDescriptor.setCompletionGoals( properties.getProperty( "completionGoals" ) ); + releaseDescriptor.setProjectVersionPolicyId( properties.getProperty( "projectVersionPolicyId" ) ); String snapshotReleasePluginAllowedStr = properties.getProperty( "exec.snapshotReleasePluginAllowed" ); releaseDescriptor.setSnapshotReleasePluginAllowed( snapshotReleasePluginAllowedStr == null ? false 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?rev=1585772&r1=1585771&r2=1585772&view=diff ============================================================================== --- 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 Tue Apr 8 16:19:17 2014 @@ -41,14 +41,14 @@ import org.codehaus.plexus.util.StringUt /** * Map projects to their new versions after release / into the next development cycle. - * + * * The map-phases per goal are: * <dl> * <dt>release:prepare</dt><dd>map-release-versions + map-development-versions; RD.isBranchCreation() = false</dd> * <dt>release:branch</dt><dd>map-branch-versions + map-development-versions; RD.isBranchCreation() = true</dd> * <dt>release:update-versions</dt><dd>map-development-versions; RD.isBranchCreation() = false</dd> * </dl> - * + * * <p> * <table> * <tr> @@ -69,7 +69,7 @@ public class MapVersionsPhase extends AbstractReleasePhase { private ResourceBundle resourceBundle; - + /** * Whether to convert to a snapshot or a release. */ @@ -84,8 +84,8 @@ public class MapVersionsPhase * Component used to prompt for input. */ private Prompter prompter; - - + + /** * Component used for custom or default version policy */ @@ -101,7 +101,7 @@ public class MapVersionsPhase throws ReleaseExecutionException { ReleaseResult result = new ReleaseResult(); - + resourceBundle = getResourceBundle( releaseEnvironment.getLocale() ); MavenProject rootProject = ReleaseUtil.getRootProject( reactorProjects ); @@ -194,8 +194,8 @@ public class MapVersionsPhase return result; } - private String resolveNextVersion( MavenProject project, - String projectId, + private String resolveNextVersion( MavenProject project, + String projectId, ReleaseDescriptor releaseDescriptor, ReleaseResult result ) throws ReleaseExecutionException @@ -209,7 +209,7 @@ public class MapVersionsPhase { return project.getVersion(); } - + defaultVersion = getReleaseVersion( projectId, releaseDescriptor ); } else if ( !convertToSnapshot ) // map-release-version @@ -224,7 +224,7 @@ public class MapVersionsPhase { return project.getVersion(); } - + defaultVersion = getDevelopmentVersion( projectId, releaseDescriptor ); } else @@ -234,11 +234,11 @@ public class MapVersionsPhase { return project.getVersion(); } - + defaultVersion = getDevelopmentVersion( projectId, releaseDescriptor ); } //@todo validate default version, maybe with DefaultArtifactVersion - + String suggestedVersion = null; String nextVersion = defaultVersion; String messageKey = null; @@ -253,12 +253,12 @@ public class MapVersionsPhase { baseVersion = getReleaseVersion( projectId, releaseDescriptor ); } - // unspecified and unmapped version, so use project version + // unspecified and unmapped version, so use project version if ( baseVersion == null ) { baseVersion = project.getVersion(); } - + try { try @@ -288,7 +288,7 @@ public class MapVersionsPhase throw new ReleaseExecutionException( e.getMessage(), e ); } } - + if ( releaseDescriptor.isInteractive() ) { if ( messageKey == null ) @@ -298,7 +298,7 @@ public class MapVersionsPhase String message = MessageFormat.format( resourceBundle.getString( messageKey ), project.getName(), projectId ); nextVersion = prompter.prompt( message, suggestedVersion ); - + //@todo validate next version, maybe with DefaultArtifactVersion } else @@ -317,7 +317,6 @@ public class MapVersionsPhase private String resolveSuggestedVersion( String baseVersion, String policyId ) throws PolicyException, VersionParseException { - // right now only default available VersionPolicy policy = versionPolicies.get( policyId ); VersionPolicyRequest request = new VersionPolicyRequest().setVersion( baseVersion ); @@ -344,7 +343,7 @@ public class MapVersionsPhase } return nextVersion; } - + private String getMapversionPromptKey( ReleaseDescriptor releaseDescriptor ) { Modified: maven/release/trunk/maven-release-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-plugin/pom.xml?rev=1585772&r1=1585771&r2=1585772&view=diff ============================================================================== --- maven/release/trunk/maven-release-plugin/pom.xml (original) +++ maven/release/trunk/maven-release-plugin/pom.xml Tue Apr 8 16:19:17 2014 @@ -29,7 +29,7 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> - <version>3,0-SNAPSHOT</version> + <version>3.0-SNAPSHOT</version> <packaging>maven-plugin</packaging> <name>Maven Release Plugin</name> 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?rev=1585772&r1=1585771&r2=1585772&view=diff ============================================================================== --- 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 Tue Apr 8 16:19:17 2014 @@ -36,7 +36,7 @@ import org.apache.maven.shared.release.c * used. This can be followed by a call to <tt>release:perform</tt>. For more info see <a * href="http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html" * >http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html</a>. - * + * * @author <a href="mailto:jdca...@apache.org">John Casey</a> * @author <a href="mailto:eveni...@apache.org">Emmanuel Venisse</a> * @author <a href="mailto:ja...@maven.org">Jason van Zyl</a> @@ -69,7 +69,7 @@ public class PrepareReleaseMojo /** * Whether to update dependencies version to the next development version. - * + * * @since 2.0-beta-5 */ @Parameter( defaultValue = "true", property = "updateDependencies" ) @@ -78,7 +78,7 @@ public class PrepareReleaseMojo /** * Whether to automatically assign submodules the parent version. If set to false, the user will be prompted for the * version of each submodules. - * + * * @since 2.0-beta-5 */ @Parameter( defaultValue = "false", property = "autoVersionSubmodules" ) @@ -108,7 +108,7 @@ public class PrepareReleaseMojo /** * Goals to run on completion of the preparation step, after transformation back to the next development version but * before committing. Space delimited. - * + * * @since 2.2 */ @Parameter( defaultValue = "", property = "completionGoals" ) @@ -116,7 +116,7 @@ public class PrepareReleaseMojo /** * Commits to do are atomic or by project. - * + * * @since 2.0-beta-5 */ @Parameter( defaultValue = "false", property = "commitByProject" ) @@ -124,7 +124,7 @@ public class PrepareReleaseMojo /** * Whether to allow timestamped SNAPSHOT dependencies. Default is to fail when finding any SNAPSHOT. - * + * * @since 2.0-beta-7 */ @Parameter( defaultValue = "false", property = "ignoreSnapshots" ) @@ -133,7 +133,7 @@ public class PrepareReleaseMojo /** * Whether to allow usage of a SNAPSHOT version of the Release Plugin. This in an internal property used to support * testing of the plugin itself in batch mode. - * + * * @since 2.0-beta-9 */ @Parameter( defaultValue = "false", property = "allowReleasePluginSnapshot", readonly = true ) @@ -142,7 +142,7 @@ public class PrepareReleaseMojo /** * A list of additional exclude filters that will be skipped when checking for modifications on the working copy. Is * ignored, when checkModificationExcludes is set. - * + * * @since 2.1 */ @Parameter @@ -150,7 +150,7 @@ public class PrepareReleaseMojo /** * Command-line version of checkModificationExcludes. - * + * * @since 2.1 */ @Parameter( property = "checkModificationExcludeList" ) @@ -158,7 +158,7 @@ public class PrepareReleaseMojo /** * Default version to use when preparing a release or a branch. - * + * * @since 2.0-beta-8 */ @Parameter( property = "releaseVersion" ) @@ -166,7 +166,7 @@ public class PrepareReleaseMojo /** * Default version to use for new local working copy. - * + * * @since 2.0-beta-8 */ @Parameter( property = "developmentVersion" ) @@ -180,15 +180,15 @@ public class PrepareReleaseMojo * <li>You may not want to use this in conjunction with <code>suppressCommitBeforeTag</code>, such that no poms with * released versions are committed to the working copy ever.</li> * </ul> - * + * * @since 2.0-beta-9 */ - @Parameter( defaultValue = "true", property = "remoteTagging" ) + @Parameter( defaultValue = "true", property = "remoteTagging" ) private boolean remoteTagging; /** * Whether to bump the working copy versions to <code>developmentVersion</code>. - * + * * @since 2.1 */ @Parameter( defaultValue = "true", property = "updateWorkingCopyVersions" ) @@ -201,23 +201,31 @@ public class PrepareReleaseMojo * <br/> * <code>suppressCommitBeforeTag</code> is useful when you want to avoid poms with released versions in all * revisions of your trunk or development branch. - * + * * @since 2.1 */ - @Parameter( defaultValue = "false", property = "suppressCommitBeforeTag" ) + @Parameter( defaultValue = "false", property = "suppressCommitBeforeTag" ) private boolean suppressCommitBeforeTag; /** * Wait the specified number of second before creating the tag. <br/> * <code>waitBeforeTagging</code> is useful when your source repository is synced between several instances and * access to it is determined by geographical location, like the SVN repository at the Apache Software Foundation. - * + * * @since 2.2 */ @Parameter( defaultValue = "0", property = "waitBeforeTagging" ) private int waitBeforeTagging; /** + * The {@code VersionPolicy} ID. + * + * @since 3.0 + */ + @Parameter( defaultValue = "default", property = "projectVersionPolicyId" ) + private String projectVersionPolicyId; + + /** * {@inheritDoc} */ public void execute() @@ -256,6 +264,7 @@ public class PrepareReleaseMojo config.setUpdateWorkingCopyVersions( updateWorkingCopyVersions ); config.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeTag ); config.setWaitBeforeTagging( waitBeforeTagging ); + config.setProjectVersionPolicyId( projectVersionPolicyId ); if ( checkModificationExcludeList != null ) {