You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ev...@apache.org on 2007/02/20 01:04:05 UTC
svn commit: r509391 - in /maven/release/trunk/maven-release-manager/src:
main/java/org/apache/maven/shared/release/config/
main/java/org/apache/maven/shared/release/phase/ main/mdo/
test/java/org/apache/maven/shared/release/config/ test/java/org/apache...
Author: evenisse
Date: Mon Feb 19 16:04:04 2007
New Revision: 509391
URL: http://svn.apache.org/viewvc?view=rev&rev=509391
Log:
Allow to set the version of dependencies in the release process then set dependencies versions to snapshots if they was snapshots before the release.
Submitted by: Pete Marvin King
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/phase/AbstractRewritePomsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
maven/release/trunk/maven-release-manager/src/main/mdo/release-descriptor.mdo
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
maven/release/trunk/maven-release-manager/src/test/resources/release.properties
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?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- 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 Mon Feb 19 16:04:04 2007
@@ -30,9 +30,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Properties;
+import java.util.Set;
/**
* Read and write release configuration and state from a properties file.
@@ -95,6 +98,8 @@
releaseDescriptor.setPomFileName( properties.getProperty( "exec.pomFileName" ) );
releaseDescriptor.setPreparationGoals( properties.getProperty( "preparationGoals" ) );
+ loadResolvedDependencies( properties, releaseDescriptor );
+
// boolean properties are not written to the properties file because the value from the caller is always used
for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
@@ -253,6 +258,12 @@
}
}
+ if ( ( config.getResolvedSnapshotDependencies() != null ) &&
+ ( config.getResolvedSnapshotDependencies().size() > 0 ) )
+ {
+ processResolvedDependencies( properties, config.getResolvedSnapshotDependencies() );
+ }
+
OutputStream outStream = null;
//noinspection OverlyBroadCatchBlock
try
@@ -273,8 +284,82 @@
}
+ private void processResolvedDependencies( Properties prop, Map resolvedDependencies )
+ {
+ Set entries = resolvedDependencies.entrySet();
+ Iterator iterator = entries.iterator();
+ Entry currentEntry;
+
+ while ( iterator.hasNext() )
+ {
+ currentEntry = (Entry) iterator.next();
+
+ Map versionMap = (Map) currentEntry.getValue();
+
+ prop.setProperty( "dependency." + currentEntry.getKey() + ".release",
+ (String) versionMap.get( ReleaseDescriptor.RELEASE_KEY ) );
+ prop.setProperty( "dependency." + currentEntry.getKey() + ".development",
+ (String) versionMap.get( ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ }
+ }
+
private static File getDefaultReleasePropertiesFile( ReleaseDescriptor mergeDescriptor )
{
return new File( mergeDescriptor.getWorkingDirectory(), "release.properties" );
+ }
+
+ private void loadResolvedDependencies( Properties prop, ReleaseDescriptor descriptor )
+ {
+ Map resolvedDependencies = new HashMap();
+
+ Set entries = prop.entrySet();
+ Iterator iterator = entries.iterator();
+ String propertyName;
+ Entry currentEntry;
+
+ while ( iterator.hasNext() )
+ {
+ currentEntry = (Entry) iterator.next();
+ propertyName = (String) currentEntry.getKey();
+
+ if ( propertyName.startsWith( "dependency." ) )
+ {
+ Map versionMap;
+ String artifactVersionlessKey;
+ int startIndex;
+ int endIndex;
+ String versionType;
+
+ versionMap = new HashMap();
+ startIndex = propertyName.lastIndexOf( "dependency." );
+
+ if ( propertyName.indexOf( ".development" ) != -1 )
+ {
+ endIndex = propertyName.indexOf( ".development" );
+ versionType = ReleaseDescriptor.DEVELOPMENT_KEY;
+ }
+ else
+ {
+ endIndex = propertyName.indexOf( ".release" );
+ versionType = ReleaseDescriptor.RELEASE_KEY;
+ }
+
+ artifactVersionlessKey = propertyName.substring( startIndex, endIndex );
+
+ if ( resolvedDependencies.containsKey( artifactVersionlessKey ) )
+ {
+ versionMap = (Map) resolvedDependencies.get( artifactVersionlessKey );
+ }
+ else
+ {
+ versionMap = new HashMap();
+ resolvedDependencies.put( artifactVersionlessKey, versionMap );
+ }
+
+ versionMap.put( versionType, currentEntry.getValue() );
+ }
+ }
+
+ descriptor.setResolvedSnapshotDependencies( resolvedDependencies );
}
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java Mon Feb 19 16:04:04 2007
@@ -207,6 +207,7 @@
Namespace namespace = rootElement.getNamespace();
Map mappedVersions = getNextVersionMap( releaseDescriptor );
Map originalVersions = getOriginalVersionMap( releaseDescriptor, reactorProjects );
+ Map resolvedSnapshotDependencies = releaseDescriptor.getResolvedSnapshotDependencies();
Element properties = rootElement.getChild( "properties", namespace );
String parentVersion = rewriteParent( project, rootElement, namespace, mappedVersions, originalVersions );
@@ -215,8 +216,8 @@
rewriteVersion( rootElement, namespace, mappedVersions, projectId, project, parentVersion );
- rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, originalVersions, projectId,
- properties, result );
+ rewriteDependencies( project.getDependencies(), rootElement, mappedVersions, resolvedSnapshotDependencies,
+ originalVersions, projectId, properties, releaseDescriptor, result );
if ( project.getDependencyManagement() != null )
{
@@ -224,7 +225,8 @@
if ( dependencyRoot != null )
{
rewriteDependencies( project.getDependencyManagement().getDependencies(), dependencyRoot,
- mappedVersions, originalVersions, projectId, properties, result );
+ mappedVersions, resolvedSnapshotDependencies, originalVersions, projectId,
+ properties, releaseDescriptor, result );
}
}
@@ -233,19 +235,19 @@
Element buildRoot = rootElement.getChild( "build", namespace );
if ( buildRoot != null )
{
- rewritePlugins( project.getBuildPlugins(), buildRoot, mappedVersions, originalVersions, projectId,
- properties, result );
+ rewritePlugins( project.getBuildPlugins(), buildRoot, mappedVersions, resolvedSnapshotDependencies,
+ originalVersions, projectId, properties, result );
if ( project.getPluginManagement() != null )
{
Element pluginsRoot = buildRoot.getChild( "pluginManagement", namespace );
if ( pluginsRoot != null )
{
rewritePlugins( project.getPluginManagement().getPlugins(), pluginsRoot, mappedVersions,
- originalVersions, projectId, properties, result );
+ resolvedSnapshotDependencies, originalVersions, projectId, properties, result );
}
}
- rewriteExtensions( project.getBuildExtensions(), buildRoot, mappedVersions, originalVersions, projectId,
- properties, result );
+ rewriteExtensions( project.getBuildExtensions(), buildRoot, mappedVersions,
+ resolvedSnapshotDependencies, originalVersions, projectId, properties, result );
}
}
@@ -254,8 +256,8 @@
Element pluginsRoot = rootElement.getChild( "reporting", namespace );
if ( pluginsRoot != null )
{
- rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions, originalVersions,
- projectId, properties, result );
+ rewriteReportPlugins( project.getReportPlugins(), pluginsRoot, mappedVersions,
+ resolvedSnapshotDependencies, originalVersions, projectId, properties, result );
}
}
@@ -321,7 +323,8 @@
}
private void rewriteDependencies( List dependencies, Element dependencyRoot, Map mappedVersions,
- Map originalVersions, String projectId, Element properties, ReleaseResult result )
+ Map resolvedSnapshotDependencies, Map originalVersions, String projectId,
+ Element properties, ReleaseDescriptor releaseDescriptor, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( dependencies != null )
@@ -330,15 +333,15 @@
{
Dependency dep = (Dependency) i.next();
- updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, dep.getVersion(),
- originalVersions, "dependencies", "dependency", dependencyRoot, projectId,
- properties, result );
+ updateDomVersion( dep.getGroupId(), dep.getArtifactId(), mappedVersions, resolvedSnapshotDependencies,
+ dep.getVersion(), originalVersions, "dependencies", "dependency", dependencyRoot,
+ projectId, properties, result );
}
}
}
- private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions,
- String projectId, Element properties, ReleaseResult result )
+ private void rewritePlugins( List plugins, Element pluginRoot, Map mappedVersions, Map resolvedSnapshotDependencies,
+ Map originalVersions, String projectId, Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( plugins != null )
@@ -350,16 +353,17 @@
// We can ignore plugins whose version is assumed, they are only written into the release pom
if ( plugin.getVersion() != null )
{
- updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
- originalVersions, "plugins", "plugin", pluginRoot, projectId,
- properties, result );
+ updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions,
+ resolvedSnapshotDependencies, plugin.getVersion(), originalVersions, "plugins",
+ "plugin", pluginRoot, projectId, properties, result );
}
}
}
}
- private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions, Map originalVersions,
- String projectId, Element properties, ReleaseResult result )
+ private void rewriteExtensions( List extensions, Element extensionRoot, Map mappedVersions,
+ Map resolvedSnapshotDependencies, Map originalVersions, String projectId,
+ Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( extensions != null )
@@ -369,14 +373,15 @@
Extension extension = (Extension) i.next();
updateDomVersion( extension.getGroupId(), extension.getArtifactId(), mappedVersions,
- extension.getVersion(), originalVersions, "extensions", "extension", extensionRoot,
- projectId, properties, result );
+ resolvedSnapshotDependencies, extension.getVersion(), originalVersions, "extensions",
+ "extension", extensionRoot, projectId, properties, result );
}
}
}
- private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions, Map originalVersions,
- String projectId, Element properties, ReleaseResult result )
+ private void rewriteReportPlugins( List plugins, Element pluginRoot, Map mappedVersions,
+ Map resolvedSnapshotDependencies, Map originalVersions, String projectId,
+ Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
if ( plugins != null )
@@ -388,28 +393,38 @@
// We can ignore plugins whose version is assumed, they are only written into the release pom
if ( plugin.getVersion() != null )
{
- updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions, plugin.getVersion(),
- originalVersions, "plugins", "plugin", pluginRoot, projectId,
- properties, result );
+ updateDomVersion( plugin.getGroupId(), plugin.getArtifactId(), mappedVersions,
+ resolvedSnapshotDependencies, plugin.getVersion(), originalVersions, "plugins",
+ "plugin", pluginRoot, projectId, properties, result );
}
}
}
}
- private void updateDomVersion( String groupId, String artifactId, Map mappedVersions, String version,
- Map originalVersions, String groupTagName, String tagName, Element dependencyRoot,
- String projectId, Element properties, ReleaseResult result )
+ private void updateDomVersion( String groupId, String artifactId, Map mappedVersions,
+ Map resolvedSnapshotDepedencies, String version, Map originalVersions,
+ String groupTagName, String tagName, Element dependencyRoot, String projectId,
+ Element properties, ReleaseResult result )
throws ReleaseExecutionException, ReleaseFailureException
{
String key = ArtifactUtils.versionlessKey( groupId, artifactId );
String mappedVersion = (String) mappedVersions.get( key );
+ String resolvedSnapshotVersion = getResolvedSnapshotVersion( key, resolvedSnapshotDepedencies );
Object originalVersion = originalVersions.get( key );
+
+ // workaround
+ if ( originalVersion == null )
+ {
+ originalVersion = getOriginalResolvedSnapshotVersion( key, resolvedSnapshotDepedencies );
+ }
+
if ( version.equals( originalVersion ) )
{
- if ( mappedVersion != null )
+ if ( ( mappedVersion != null ) || ( resolvedSnapshotVersion != null ) )
{
- logInfo( result, "Updating " + artifactId + " to " + mappedVersion );
+ logInfo( result, "Updating " + artifactId + " to " +
+ ( ( mappedVersion != null ) ? mappedVersion : resolvedSnapshotVersion ) );
try
{
@@ -435,6 +450,12 @@
// avoid if in management
if ( versionElement != null )
{
+ if ( mappedVersion == null )
+ {
+ versionElement.setText( resolvedSnapshotVersion );
+ return;
+ }
+
String versionText = versionElement.getTextTrim();
// avoid if it was not originally set to the original value (it may be an expression), unless mapped version differs
@@ -443,8 +464,8 @@
{
versionElement.setText( mappedVersion );
}
- else if ( versionText.matches( "\\$\\{project.+\\}" )
- || versionText.matches( "\\$\\{pom.+\\}" ) )
+ else if ( versionText.matches( "\\$\\{project.+\\}" ) ||
+ versionText.matches( "\\$\\{pom.+\\}" ) )
{
logInfo( result, "Ignoring artifact version update for expression: " + versionText );
//ignore... we cannot update this expression
@@ -475,8 +496,8 @@
else
{
// the expression used to define the version of this artifact may be inherited
- throw new ReleaseFailureException( "The version could not be updated: " +
- versionText );
+ throw new ReleaseFailureException(
+ "The version could not be updated: " + versionText );
}
}
else
@@ -623,6 +644,8 @@
return result;
}
+ protected abstract String getResolvedSnapshotVersion( String artifactVersionlessKey, Map resolvedSnapshots );
+
protected abstract Map getOriginalVersionMap( ReleaseDescriptor releaseDescriptor, List reactorProjects );
protected abstract Map getNextVersionMap( ReleaseDescriptor releaseDescriptor );
@@ -631,6 +654,20 @@
ReleaseDescriptor releaseDescriptor, String projectId,
ScmRepository scmRepository, ReleaseResult result )
throws ReleaseExecutionException;
+
+ protected String getOriginalResolvedSnapshotVersion( String artifactVersionlessKey, Map resolvedSnapshots )
+ {
+ Map versionsMap = (Map) resolvedSnapshots.get( artifactVersionlessKey );
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get( ReleaseDescriptor.ORIGINAL_VERSION ) );
+ }
+ else
+ {
+ return null;
+ }
+ }
protected Element rewriteElement( String name, String value, Element root, Namespace namespace )
{
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java Mon Feb 19 16:04:04 2007
@@ -29,12 +29,16 @@
import org.apache.maven.shared.release.ReleaseFailureException;
import org.apache.maven.shared.release.ReleaseResult;
import org.apache.maven.shared.release.config.ReleaseDescriptor;
+import org.apache.maven.shared.release.versions.DefaultVersionInfo;
+import org.apache.maven.shared.release.versions.VersionInfo;
+import org.apache.maven.shared.release.versions.VersionParseException;
import org.codehaus.plexus.components.interactivity.Prompter;
import org.codehaus.plexus.components.interactivity.PrompterException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -51,6 +55,26 @@
public class CheckDependencySnapshotsPhase
extends AbstractReleasePhase
{
+ public static final String RESOLVE_SNAPSHOT_MESSAGE = "There are still some remaining snapshot dependencies.";
+
+ public static final String RESOLVE_SNAPSHOT_PROMPT = "Do you want to resolve them now?";
+
+ public static final String RESOLVE_SNAPSHOT_TYPE_MESSAGE = "Dependency type to resolve,";
+
+ public static final String RESOLVE_SNAPSHOT_TYPE_PROMPT =
+ "specify the selection number ( 0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions ):";
+
+ public static final String RESOLVE_ALL_SNAPSHOT_MESSAGE = "Resolve All Snapshots.";
+
+ public static final String RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE =
+ "Resolve Project Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE = "Resolve Report Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE = "Resolve Extension Dependency Snapshots.";
+
+ public static final String RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE = "Resolve Plugin Dependency Snapshots.";
+
/**
* Component used to prompt for input.
*/
@@ -86,6 +110,9 @@
throws ReleaseFailureException, ReleaseExecutionException
{
Set snapshotDependencies = new HashSet();
+ Set snapshotReportDependencies = new HashSet();
+ Set snapshotExtensionsDependencies = new HashSet();
+ Set snapshotPluginDependencies = new HashSet();
if ( project.getParentArtifact() != null )
{
@@ -149,7 +176,7 @@
if ( addToFailures )
{
- snapshotDependencies.add( artifact );
+ snapshotPluginDependencies.add( artifact );
}
}
}
@@ -160,7 +187,8 @@
if ( checkArtifact( artifact, originalVersions ) )
{
- snapshotDependencies.add( artifact );
+ //snapshotDependencies.add( artifact );
+ snapshotReportDependencies.add( artifact );
}
}
@@ -170,32 +198,33 @@
if ( checkArtifact( artifact, originalVersions ) )
{
- snapshotDependencies.add( artifact );
+ snapshotExtensionsDependencies.add( artifact );
}
}
- if ( !snapshotDependencies.isEmpty() )
+ if ( !snapshotDependencies.isEmpty() || !snapshotReportDependencies.isEmpty() ||
+ !snapshotExtensionsDependencies.isEmpty() || !snapshotPluginDependencies.isEmpty() )
{
- List snapshotsList = new ArrayList( snapshotDependencies );
-
- Collections.sort( snapshotsList );
-
- StringBuffer message = new StringBuffer();
-
- for ( Iterator i = snapshotsList.iterator(); i.hasNext(); )
+ if ( releaseDescriptor.isInteractive() )
{
- Artifact artifact = (Artifact) i.next();
+ resolveSnapshots( snapshotDependencies, snapshotReportDependencies, snapshotExtensionsDependencies,
+ snapshotPluginDependencies, releaseDescriptor );
+ }
- message.append( " " );
+ if ( !snapshotDependencies.isEmpty() || !snapshotReportDependencies.isEmpty() ||
+ !snapshotExtensionsDependencies.isEmpty() || !snapshotPluginDependencies.isEmpty() )
+ {
+ StringBuffer message = new StringBuffer();
- message.append( artifact );
+ printSnapshotDependencies( snapshotDependencies, message );
+ printSnapshotDependencies( snapshotReportDependencies, message );
+ printSnapshotDependencies( snapshotExtensionsDependencies, message );
+ printSnapshotDependencies( snapshotPluginDependencies, message );
+ message.append( "in project '" + project.getName() + "' (" + project.getId() + ")" );
- message.append( "\n" );
+ throw new ReleaseFailureException(
+ "Can't release project due to non released dependencies :\n" + message );
}
-
- message.append( "in project '" + project.getName() + "' (" + project.getId() + ")" );
-
- throw new ReleaseFailureException( "Can't release project due to non released dependencies :\n" + message );
}
}
@@ -219,5 +248,132 @@
public void setPrompter( Prompter prompter )
{
this.prompter = prompter;
+ }
+
+ private StringBuffer printSnapshotDependencies( Set snapshotsSet, StringBuffer message )
+ {
+ List snapshotsList = new ArrayList( snapshotsSet );
+
+ Collections.sort( snapshotsList );
+
+ for ( Iterator i = snapshotsList.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+
+ message.append( " " );
+
+ message.append( artifact );
+
+ message.append( "\n" );
+ }
+
+ return message;
+ }
+
+ private void resolveSnapshots( Set projectDependencies, Set reportDependencies, Set extensionDependencies,
+ Set pluginDependencies, ReleaseDescriptor releaseDescriptor )
+ throws ReleaseExecutionException
+ {
+ try
+ {
+ prompter.showMessage( RESOLVE_SNAPSHOT_MESSAGE );
+ String result =
+ prompter.prompt( RESOLVE_SNAPSHOT_PROMPT, Arrays.asList( new String[]{"yes", "no"} ), "no" );
+
+ if ( result.toLowerCase().startsWith( "y" ) )
+ {
+ Set snapshotSet = new HashSet();
+ Map resolvedSnapshots = null;
+ prompter.showMessage( RESOLVE_SNAPSHOT_TYPE_MESSAGE );
+ result = prompter.prompt( RESOLVE_SNAPSHOT_TYPE_PROMPT,
+ Arrays.asList( new String[]{"0", "1", "2", "3"} ), "1" );
+
+ switch ( Integer.parseInt( result.toLowerCase() ) )
+ {
+ // all
+ case 0:
+ prompter.showMessage( RESOLVE_ALL_SNAPSHOT_MESSAGE );
+ snapshotSet.addAll( projectDependencies );
+ snapshotSet.addAll( reportDependencies );
+ snapshotSet.addAll( extensionDependencies );
+ snapshotSet.addAll( pluginDependencies );
+ resolvedSnapshots = processSnapshot( snapshotSet );
+ break;
+
+ // project dependencies
+ case 1:
+ prompter.showMessage( RESOLVE_ALL_PROJECT_DEPENDENCIES_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot( projectDependencies );
+ break;
+
+ // plugins
+ case 2:
+ prompter.showMessage( RESOLVE_ALL_PLUGIN_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot( pluginDependencies );
+ break;
+
+ // reports
+ case 3:
+ prompter.showMessage( RESOLVE_ALL_REPORTS_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot( reportDependencies );
+ break;
+
+ // extensions
+ case 4:
+ prompter.showMessage( RESOLVE_ALL_EXTENSIONS_SNAPSHOT_MESSAGE );
+ resolvedSnapshots = processSnapshot( extensionDependencies );
+ break;
+ }
+
+ releaseDescriptor.setResolvedSnapshotDependencies( resolvedSnapshots );
+ }
+ }
+ catch ( PrompterException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ catch ( VersionParseException e )
+ {
+ throw new ReleaseExecutionException( e.getMessage(), e );
+ }
+ }
+
+ private Map processSnapshot( Set snapshotSet )
+ throws PrompterException, VersionParseException
+ {
+ Map resolvedSnapshots = new HashMap();
+ Iterator iterator = snapshotSet.iterator();
+ Artifact currentArtifact;
+ String result;
+ VersionInfo version;
+
+ while ( iterator.hasNext() )
+ {
+ currentArtifact = (Artifact) iterator.next();
+ version = new DefaultVersionInfo( currentArtifact.getVersion() );
+
+ result = prompter.prompt( "'" + ArtifactUtils.versionlessKey( currentArtifact ) + "' set to release?",
+ Arrays.asList( new String[]{"yes", "no"} ), "yes" );
+
+ if ( result.toLowerCase().startsWith( "y" ) )
+ {
+ VersionInfo nextDevelopmentVersion;
+ Map versionMap = new HashMap();
+
+ iterator.remove();
+ result = prompter.prompt( "What is the next development version?", Collections.singletonList(
+ version.getNextVersion().getSnapshotVersionString() ),
+ version.getNextVersion().getSnapshotVersionString() );
+
+ nextDevelopmentVersion = new DefaultVersionInfo( result );
+ versionMap.put( ReleaseDescriptor.ORIGINAL_VERSION, version.toString() );
+ versionMap.put( ReleaseDescriptor.DEVELOPMENT_KEY, nextDevelopmentVersion.getSnapshotVersionString() );
+ versionMap.put( ReleaseDescriptor.RELEASE_KEY, version.getReleaseVersionString() );
+
+ resolvedSnapshots.put( ArtifactUtils.versionlessKey( currentArtifact ), versionMap );
+ }
+ }
+
+ return resolvedSnapshots;
}
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java Mon Feb 19 16:04:04 2007
@@ -101,4 +101,18 @@
{
return releaseDescriptor.getDevelopmentVersions();
}
+
+ protected String getResolvedSnapshotVersion( String artifactVersionlessKey, Map resolvedSnapshotsMap )
+ {
+ Map versionsMap = (Map) resolvedSnapshotsMap.get( artifactVersionlessKey );
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get( ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ }
+ else
+ {
+ return null;
+ }
+ }
}
Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java Mon Feb 19 16:04:04 2007
@@ -162,4 +162,18 @@
{
return releaseDescriptor.getReleaseVersions();
}
-}
\ No newline at end of file
+
+ protected String getResolvedSnapshotVersion( String artifactVersionlessKey, Map resolvedSnapshotsMap )
+ {
+ Map versionsMap = (Map) resolvedSnapshotsMap.get( artifactVersionlessKey );
+
+ if ( versionsMap != null )
+ {
+ return (String) ( versionsMap.get( ReleaseDescriptor.RELEASE_KEY ) );
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
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=509391&r1=509390&r2=509391
==============================================================================
--- 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 Mon Feb 19 16:04:04 2007
@@ -161,6 +161,18 @@
</description>
</field>
<field>
+ <name>resolvedSnapshotDependencies</name>
+ <version>1.0.0</version>
+ <type>Map</type>
+ <association stash.keyType="String">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ A map of resolved snapshot dependencies versions.
+ </description>
+ </field>
+ <field>
<name>originalScmInfo</name>
<version>1.0.0</version>
<type>Map</type>
@@ -257,6 +269,31 @@
<codeSegment>
<version>1.0.0</version>
<code><![CDATA[
+ public static final String DEVELOPMENT_KEY = "dev";
+
+ public static final String RELEASE_KEY = "rel";
+
+ public static final String ORIGINAL_VERSION = "original";
+
+ /**
+ * Map a given snapshot dependency to a specified version from when it is released.
+ *
+ */
+ public void mapResolvedSnapshotDependencies( String artifactName, String releaseVersion, String developmentVersion )
+ {
+ if (resolvedSnapshotDependencies == null) {
+ resolvedSnapshotDependencies = new java.util.HashMap();
+ } else {
+ assert !resolvedSnapshotDependencies.containsKey( artifactName );
+ }
+
+ java.util.Map versionsMap = new java.util.HashMap();
+
+ versionsMap.put( DEVELOPMENT_KEY, developmentVersion );
+ versionsMap.put( RELEASE_KEY, releaseVersion );
+ resolvedSnapshotDependencies.put( artifactName, versionsMap );
+ }
+
/**
* Map a given project to a specified version from when it is released.
*
@@ -333,6 +370,34 @@
}
}
return originalVersions;
+ }
+
+ /**
+ * Retrieve the release version for the resolved snapshot dependency.
+ *
+ */
+ public String getDependencyDevelopmentVersion( String artifactConflictId )
+ {
+ if ( ( resolvedSnapshotDependencies == null ) && ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
+ {
+ java.util.Map versionMap = ( java.util.Map ) resolvedSnapshotDependencies.get( artifactConflictId );
+ return ( String ) versionMap.get( DEVELOPMENT_KEY );
+ }
+ return null;
+ }
+
+ /**
+ * Retrieve the release version for the resolved snapshot dependency.
+ *
+ */
+ public String getDependencyReleaseVersion( String artifactConflictId )
+ {
+ if ( ( resolvedSnapshotDependencies == null ) && ( resolvedSnapshotDependencies.containsKey( artifactConflictId ) ) )
+ {
+ java.util.Map versionMap = ( java.util.Map ) resolvedSnapshotDependencies.get( artifactConflictId );
+ return ( String ) versionMap.get( RELEASE_KEY );
+ }
+ return null;
}
public boolean equals( Object obj )
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java Mon Feb 19 16:04:04 2007
@@ -319,6 +319,7 @@
assertTrue( "Expected no release version mappings", config.getReleaseVersions().isEmpty() );
assertTrue( "Expected no dev version mappings", config.getDevelopmentVersions().isEmpty() );
assertTrue( "Expected no scm mappings", config.getOriginalScmInfo().isEmpty() );
+ assertNotNull( "Expected resolved snapshot dependencies map", config.getResolvedSnapshotDependencies() );
}
public ReleaseDescriptor createMergeConfiguration()
@@ -369,6 +370,8 @@
scm.setTag( null );
scm.setDeveloperConnection( null );
expected.mapOriginalScmInfo( "groupId:artifactId2", scm );
+ expected.mapResolvedSnapshotDependencies( "external:artifactId", "1.0", "1.1-SNAPSHOT" );
+
return expected;
}
Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhaseTest.java Mon Feb 19 16:04:04 2007
@@ -30,6 +30,8 @@
import org.jmock.core.stub.ThrowStub;
import java.util.List;
+import java.util.Map;
+import java.util.Stack;
/**
* Test the dependency snapshot check phase.
@@ -117,6 +119,8 @@
Mock mockPrompter = new Mock( Prompter.class );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
phase.setPrompter( (Prompter) mockPrompter.proxy() );
try
@@ -133,6 +137,8 @@
mockPrompter.reset();
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
try
{
@@ -183,6 +189,8 @@
Mock mockPrompter = new Mock( Prompter.class );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "donkey" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
phase.setPrompter( (Prompter) mockPrompter.proxy() );
try
@@ -199,6 +207,8 @@
mockPrompter.reset();
mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "donkey" ) );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will( new ReturnStub( "no" ) );
try
{
@@ -258,8 +268,14 @@
public void testSnapshotDependenciesInProjectOnlyMismatchedVersion()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "internal-differing-snapshot-dependencies" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -272,6 +288,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -332,6 +350,8 @@
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-managed-snapshot-dependency" );
+ releaseDescriptor.setInteractive( false );
+
try
{
phase.execute( releaseDescriptor, null, reactorProjects );
@@ -355,12 +375,14 @@
}
}
- public void testSnapshotDependenciesOutsideProjectOnly()
+ public void testSnapshotDependenciesOutsideProjectOnlyNonInteractive()
throws Exception
{
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-snapshot-dependencies" );
+ releaseDescriptor.setInteractive( false );
+
try
{
phase.execute( releaseDescriptor, null, reactorProjects );
@@ -384,11 +406,82 @@
}
}
+ public void testSnapshotDependenciesOutsideProjectOnlyInteractiveWithSnapshotsResolved()
+ throws Exception
+ {
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
+ ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
+ List reactorProjects = createDescriptorFromProjects( "external-snapshot-dependencies" );
+ Mock mockPrompter;
+ Stack responseStack = new Stack();
+
+ responseStack.push( "yes" );
+ responseStack.push( "1" );
+ responseStack.push( "yes" );
+ responseStack.push( "1.1-SNAPSHOT" );
+ mockPrompter = createMockPrompter( "prompt", responseStack );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ try
+ {
+ phase.execute( releaseDescriptor, null, reactorProjects );
+ }
+ catch ( ReleaseFailureException e )
+ {
+ fail( e.getMessage() );
+ }
+
+ // validate
+ Map versionsMap = (Map) releaseDescriptor.getResolvedSnapshotDependencies().get( "external:artifactId" );
+
+ assertNotNull( versionsMap );
+ assertEquals( "1.1-SNAPSHOT", versionsMap.get( ReleaseDescriptor.DEVELOPMENT_KEY ) );
+ assertEquals( "1.0", versionsMap.get( ReleaseDescriptor.RELEASE_KEY ) );
+
+ releaseDescriptor = new ReleaseDescriptor();
+
+ responseStack.push( "yes" );
+ responseStack.push( "1" );
+ responseStack.push( "yes" );
+ responseStack.push( "1.1-SNAPSHOT" );
+ mockPrompter = createMockPrompter( "prompt", responseStack );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+
+ phase.setPrompter( (Prompter) mockPrompter.proxy() );
+
+ try
+ {
+ phase.simulate( releaseDescriptor, null, reactorProjects );
+ }
+ catch ( ReleaseFailureException e )
+ {
+ fail( e.getMessage() );
+ }
+ }
+
public void testSnapshotDependenciesInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-dependencies" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -401,6 +494,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -444,8 +539,14 @@
public void testSnapshotReportPluginsOutsideProjectOnly()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-snapshot-report-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -458,6 +559,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -473,8 +576,14 @@
public void testSnapshotReportPluginsInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-report-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -487,6 +596,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -572,8 +683,14 @@
public void testSnapshotExternalManagedPlugin()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-managed-snapshot-plugin" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -586,6 +703,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -601,8 +720,14 @@
public void testSnapshotPluginsOutsideProjectOnly()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-snapshot-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -615,6 +740,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -630,8 +757,14 @@
public void testSnapshotPluginsInsideAndOutsideProject()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "internal-and-external-snapshot-plugins" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -644,6 +777,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -659,8 +794,14 @@
public void testSnapshotExternalParent()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-snapshot-parent/child" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -673,6 +814,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -702,8 +845,14 @@
public void testSnapshotExternalExtension()
throws Exception
{
+ CheckDependencySnapshotsPhase phase =
+ (CheckDependencySnapshotsPhase) lookup( ReleasePhase.ROLE, "check-dependency-snapshots" );
+
ReleaseDescriptor releaseDescriptor = new ReleaseDescriptor();
List reactorProjects = createDescriptorFromProjects( "external-snapshot-extension" );
+ Mock noPrompter = createNoMockPrompter();
+
+ phase.setPrompter( (Prompter) noPrompter.proxy() );
try
{
@@ -716,6 +865,8 @@
assertTrue( true );
}
+ resetNoMockPrompter( noPrompter );
+
try
{
phase.simulate( releaseDescriptor, null, reactorProjects );
@@ -762,4 +913,57 @@
return createReactorProjects( "check-dependencies/", path, true );
}
+ private Mock createNoMockPrompter()
+ {
+ return createYesNoMockPrompter( false );
+ }
+
+ private Mock createYesMockPrompter()
+ {
+ return createYesNoMockPrompter( true );
+ }
+
+ private Mock createYesNoMockPrompter( boolean yes )
+ {
+ Mock mockPrompter = new Mock( Prompter.class );
+
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
+ new ReturnStub( ( yes ) ? "yes" : "no" ) );
+
+ return mockPrompter;
+ }
+
+ private Mock resetNoMockPrompter( Mock mockPrompter )
+ {
+ return resetYesNoMockPrompter( mockPrompter, false );
+ }
+
+ private Mock resetYesMockPrompter( Mock mockPrompter )
+ {
+ return resetYesNoMockPrompter( mockPrompter, true );
+ }
+
+ private Mock resetYesNoMockPrompter( Mock mockPrompter, boolean yes )
+ {
+ mockPrompter.reset();
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "showMessage" );
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( "prompt" ).will(
+ new ReturnStub( ( yes ) ? "yes" : "no" ) );
+
+ return mockPrompter;
+ }
+
+ private Mock createMockPrompter( String methodName, Stack responseStack )
+ {
+ Mock mockPrompter = new Mock( Prompter.class );
+
+ while ( !responseStack.empty() )
+ {
+ mockPrompter.expects( new InvokeOnceMatcher() ).method( methodName ).will(
+ new ReturnStub( responseStack.pop() ) );
+ }
+
+ return mockPrompter;
+ }
}
Modified: maven/release/trunk/maven-release-manager/src/test/resources/release.properties
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/resources/release.properties?view=diff&rev=509391&r1=509390&r2=509391
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/resources/release.properties (original)
+++ maven/release/trunk/maven-release-manager/src/test/resources/release.properties Mon Feb 19 16:04:04 2007
@@ -42,4 +42,7 @@
project.scm.groupId\:artifactId1.tag=tag
project.scm.groupId\:artifactId2.connection=connection2
-project.scm.groupId\:artifactId2.url=url2
\ No newline at end of file
+project.scm.groupId\:artifactId2.url=url2
+
+dependency.external\:artifactId.development=1.1-SNAPSHOT
+dependency.external\:artifactId.release=1.0