You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2014/03/17 22:48:08 UTC
svn commit: r1578613 - in /maven/release/trunk: maven-release-manager/
maven-release-manager/src/main/
maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/
maven-release-manager/src/main/java/org/apache/maven/shared/release/polici...
Author: rfscholte
Date: Mon Mar 17 21:48:07 2014
New Revision: 1578613
URL: http://svn.apache.org/r1578613
Log:
MRELEASE-431: Add DefaultVersionPolicy to the release manager
Added:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/
maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
Removed:
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
Modified:
maven/release/trunk/maven-release-manager/pom.xml
maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapVersionsPhase.java
maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml
maven/release/trunk/maven-release-policy/pom.xml
maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
Modified: maven/release/trunk/maven-release-manager/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/pom.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/pom.xml (original)
+++ maven/release/trunk/maven-release-manager/pom.xml Mon Mar 17 21:48:07 2014
@@ -31,18 +31,13 @@
<name>Maven Release Manager</name>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-repository-metadata</artifactId>
- <version>${mavenVersion}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
<dependencies>
<dependency>
+ <groupId>org.apache.maven.release</groupId>
+ <artifactId>maven-release-policy</artifactId>
+ <version>3.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-9</version>
Modified: maven/release/trunk/maven-release-manager/src/main/components-fragment.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/components-fragment.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/components-fragment.xml (original)
+++ maven/release/trunk/maven-release-manager/src/main/components-fragment.xml Mon Mar 17 21:48:07 2014
@@ -101,6 +101,10 @@
<role>org.codehaus.plexus.components.interactivity.Prompter</role>
<role-hint>default</role-hint>
</requirement>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
</requirements>
</component>
<component>
@@ -115,6 +119,10 @@
<role>org.codehaus.plexus.components.interactivity.Prompter</role>
<role-hint>default</role-hint>
</requirement>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
</requirements>
</component>
<component>
@@ -130,6 +138,10 @@
<role>org.codehaus.plexus.components.interactivity.Prompter</role>
<role-hint>default</role-hint>
</requirement>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
</requirements>
</component>
<component>
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=1578613&r1=1578612&r2=1578613&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 Mon Mar 17 21:48:07 2014
@@ -21,6 +21,7 @@ package org.apache.maven.shared.release.
import java.text.MessageFormat;
import java.util.List;
+import java.util.Map;
import java.util.ResourceBundle;
import org.apache.maven.artifact.ArtifactUtils;
@@ -29,8 +30,10 @@ import org.apache.maven.shared.release.R
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
import org.apache.maven.shared.release.env.ReleaseEnvironment;
+import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
import org.apache.maven.shared.release.util.ReleaseUtil;
-import org.apache.maven.shared.release.versions.DefaultVersionInfo;
import org.apache.maven.shared.release.versions.VersionParseException;
import org.codehaus.plexus.components.interactivity.Prompter;
import org.codehaus.plexus.components.interactivity.PrompterException;
@@ -81,6 +84,12 @@ public class MapVersionsPhase
* Component used to prompt for input.
*/
private Prompter prompter;
+
+
+ /**
+ * Component used for custom or default version policy
+ */
+ private Map<String, VersionPolicy> versionPolicies;
void setPrompter( Prompter prompter )
{
@@ -239,46 +248,46 @@ public class MapVersionsPhase
{
if ( suggestedVersion == null )
{
- DefaultVersionInfo versionInfo;
+ String baseVersion = null;
+ if ( convertToSnapshot )
+ {
+ baseVersion = getReleaseVersion( projectId, releaseDescriptor );
+ }
+ // unspecified and unmapped version, so use project version
+ if ( baseVersion == null )
+ {
+ baseVersion = project.getVersion();
+ }
+
try
{
- String baseVersion = null;
- if ( convertToSnapshot )
- {
- baseVersion = getReleaseVersion( projectId, releaseDescriptor );
- }
- // unspecified and unmapped version, so use project version
- if ( baseVersion == null )
+ try
{
- baseVersion = project.getVersion();
+ suggestedVersion = resolveSuggestedVersion( baseVersion );
}
- versionInfo = new DefaultVersionInfo( baseVersion );
- }
- catch ( VersionParseException e )
- {
- if ( releaseDescriptor.isInteractive() )
+ catch ( VersionParseException e )
{
- try
+ if ( releaseDescriptor.isInteractive() )
{
- versionInfo = new DefaultVersionInfo( "1.0" );
+ suggestedVersion = resolveSuggestedVersion( "1.0" );
}
- catch ( VersionParseException e1 )
+ else
{
- // if that happens we are in serious trouble!
- throw new ReleaseExecutionException( "Version 1.0 could not be parsed!", e1 );
+ throw new ReleaseExecutionException(
+ "Error parsing version, cannot determine next version: "
+ + e.getMessage(), e );
}
}
- else
- {
- throw new ReleaseExecutionException(
- "Error parsing version, cannot determine next version: "
- + e.getMessage(), e );
- }
}
- suggestedVersion =
- convertToSnapshot ? versionInfo.getNextVersion().getSnapshotVersionString()
- : versionInfo.getReleaseVersionString();
- }
+ catch ( PolicyException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ catch ( VersionParseException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ }
if ( releaseDescriptor.isInteractive() )
{
@@ -305,10 +314,20 @@ public class MapVersionsPhase
return nextVersion;
}
+ private String resolveSuggestedVersion( String baseVersion )
+ throws PolicyException, VersionParseException
+ {
+ // right now only default available
+ VersionPolicy policy = versionPolicies.get( "default" );
+ VersionPolicyRequest request = new VersionPolicyRequest().setVersion( baseVersion );
+
+ return convertToSnapshot ? policy.getDevelopmentVersion( request ).getVersion()
+ : policy.getReleaseVersion( request ).getVersion();
+ }
+
private String getDevelopmentVersion( String projectId, ReleaseDescriptor releaseDescriptor )
{
- String defaultVersion;
- defaultVersion = releaseDescriptor.getDefaultDevelopmentVersion();
+ String defaultVersion = releaseDescriptor.getDefaultDevelopmentVersion();
if ( StringUtils.isEmpty( defaultVersion ) )
{
defaultVersion = ( String ) releaseDescriptor.getDevelopmentVersions().get( projectId );
Added: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java?rev=1578613&view=auto
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java (added)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/policies/DefaultVersionPolicy.java Mon Mar 17 21:48:07 2014
@@ -0,0 +1,33 @@
+package org.apache.maven.shared.release.policies;
+
+import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.policy.version.VersionPolicy;
+import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
+import org.apache.maven.shared.release.policy.version.VersionPolicyResult;
+import org.apache.maven.shared.release.versions.DefaultVersionInfo;
+import org.apache.maven.shared.release.versions.VersionParseException;
+
+/**
+ *
+ * @author Robert Scholte
+ *
+ * @plexus.component role="org.apache.maven.shared.release.policy.version.VersionPolicy" hint="default"
+ */
+public class DefaultVersionPolicy implements VersionPolicy
+{
+
+ public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException
+ {
+ String releaseVersion = new DefaultVersionInfo( request.getVersion() ).getReleaseVersionString();
+ return new VersionPolicyResult().setVersion( releaseVersion );
+ }
+
+ public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request )
+ throws PolicyException, VersionParseException
+ {
+ String developmentVersion = new DefaultVersionInfo( request.getVersion() ).getNextVersion().getSnapshotVersionString();
+ return new VersionPolicyResult().setVersion( developmentVersion );
+ }
+
+}
Modified: maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.xml Mon Mar 17 21:48:07 2014
@@ -26,6 +26,12 @@
<configuration>
<convertToSnapshot>true</convertToSnapshot>
</configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
+ </requirements>
</component>
<component>
<role>org.apache.maven.shared.release.phase.ReleasePhase</role>
@@ -34,6 +40,12 @@
<configuration>
<convertToSnapshot>false</convertToSnapshot>
</configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
+ </requirements>
</component>
<component>
<role>org.apache.maven.shared.release.phase.ReleasePhase</role>
@@ -43,6 +55,12 @@
<convertToSnapshot>true</convertToSnapshot>
<convertToBranch>true</convertToBranch>
</configuration>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <field-name>versionPolicies</field-name>
+ </requirement>
+ </requirements>
</component>
<!-- Turn off info messages -->
<component>
@@ -53,5 +71,12 @@
<threshold>ERROR</threshold>
</configuration>
</component>
+ <!-- For now always use default version policy -->
+ <component>
+ <role>org.apache.maven.shared.release.policy.version.VersionPolicy</role>
+ <role-hint>default</role-hint>
+ <implementation>org.apache.maven.shared.release.policies.DefaultVersionPolicy</implementation>
+ <isolated-realm>false</isolated-realm>
+ </component>
</components>
</component-set>
Modified: maven/release/trunk/maven-release-policy/pom.xml
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/pom.xml?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-policy/pom.xml (original)
+++ maven/release/trunk/maven-release-policy/pom.xml Mon Mar 17 21:48:07 2014
@@ -33,4 +33,5 @@
<artifactId>maven-repository-metadata</artifactId>
</dependency>
</dependencies>
+ <name>Maven Release Policy</name>
</project>
\ No newline at end of file
Modified: maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java?rev=1578613&r1=1578612&r2=1578613&view=diff
==============================================================================
--- maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java (original)
+++ maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicy.java Mon Mar 17 21:48:07 2014
@@ -20,11 +20,12 @@ package org.apache.maven.shared.release.
*/
import org.apache.maven.shared.release.policy.PolicyException;
+import org.apache.maven.shared.release.versions.VersionParseException;
public interface VersionPolicy
{
- public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) throws PolicyException;
+ public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
- public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request ) throws PolicyException;
+ public VersionPolicyResult getDevelopmentVersion( VersionPolicyRequest request ) throws PolicyException, VersionParseException;
}
Added: maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java?rev=1578613&view=auto
==============================================================================
--- maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java (added)
+++ maven/release/trunk/maven-release-policy/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java Mon Mar 17 21:48:07 2014
@@ -0,0 +1,29 @@
+package org.apache.maven.shared.release.versions;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public class VersionParseException
+ extends Exception
+{
+ public VersionParseException( String message )
+ {
+ super( message );
+ }
+}