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 2020/01/07 21:56:48 UTC

[maven-release] 02/02: parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly 1511735859 +0000 committer Thorsten Heit 1578433024 +0100

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MRELEASE-835
in repository https://gitbox.apache.org/repos/asf/maven-release.git

commit 5bf0e8b526390cce89b9c07a3936e34332c46fdb
Author: Stephen Connolly <st...@gmail.com>
AuthorDate: Sun Nov 26 22:37:39 2017 +0000

    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <st...@gmail.com> 1511735859 +0000 committer Thorsten Heit <th...@gmx.de> 1578433024 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578433018 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578433016 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578433015 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578433011 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578433009 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578432997 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578432995 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578432994 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578432986 +0100
    
    parent ce04d7f8b3c2ffb77821b17d8507371892dd01da
    author Stephen Connolly <st...@gmail.com> 1511735859 +0000
    committer Thorsten Heit <th...@gmx.de> 1578432982 +0100
    
    Add Jenkinsfile
    
    Add Jenkinsfile and .repository ignores to rat
    
    Add Apache license header (a tad ridiculous)
    
    [MRELEASE-993] Use shallow checkout per default (git scm)
    
    Signed-off-by: olivier lamy <ol...@apache.org>
    
    Manage dependencies
    
    Upgrade to XMLUnit 2.x
    
    Remove AbstractRunGoalsPhase#setMavenExecutor; only used for tests and won't work after M3.0 migration because componentsMap will become immutable.
    
    Fix invalid project, flatten module should adjust relativePath
    
    Verify update-versions and rollback without ReflectionUtils
    
    Move unittests to proper unit
    
    replace whitebox usage
    
    Remove all reflection calls in tests
    
    Use latest surefire
    
    Remove unwanted writes to stderr during unittests
    
    Make project Java 9-proof
    
    Clean up failsafe IT
    
    Clean up file copy with Path power
    
    Directories should not start with a slash, in some cases there can be resolved as absolute paths
    
    Proper usage of createReactorProjects( String sourcePath, String targetPath, String executionRoot )
    
    Separate test project preparation from execution
    
    Fix relativePath
    
    With Maven3+ distributionManagement.status not allowed in effective pom
    
    Prepare pathTranslator replacement with SuperPomProvider
    
    Make org.eclipse.aether:aether-util optional, so maven-artifact-transfer can work with Maven 3.0 too.
    
    Unittests expect expression for finalName, ITs expect explicit value. Let's make it explicit for both
    
    Add missing remote extension artifact
    
    Clone incorrectly set project.reporting.excludeDefaults from null to Boolean.FALSE
    
    [MRELEASE-994] Drop Maven2 support
    Upgrade mavenVersion dependencies to 3.0 (cleanup maven dependencies)
    GenerateReleasePomsPhase, replace deprecated PathTranslator with SuperPomProvider and ModelInterpolator
    JDomReporting, delete removed overridden methods
    
    PlexusJUnit4TestCase, use code from org.sonatype.sisu:sisu-inject-plexus
    AbstractReleaseTestCase, replace deprecated MavenProjectBuilder with ProjectBuilder
    AbstractRewritingReleasePhaseTestCase, ignore internal extension based tests, not supported anymore
    DefaultVersionInfoTest, adjust tests due to new comparison results
    Add dummy org.codehaus.plexus:plexus-utils:1.1, required due to auto injection by org.apache.maven.plugin.internal.PlexusUtilsInjector
    
    Code cleanup, no implementation changes
    
    Use try-with-resources
    Remove unnecessary @SuppressWarnings( "unchecked" )
    
    Clean up code, no implementation changes
    
    Clean up code, no implementation changes
    
    Ensure all Maps in ReleaseDescriptor have proper generics
    
    OddEvenVersionPolicy should not depend on maven-release-manager
    
    Remove all overloaded methods from ReleaseManager, only use Release<Goal>Request
    
    simplify code, replace iterators with foreach loops
    
    [MRELEASE-956] Release Strategy Interface
    
    [MRELEASE-992] Deprecated maven flag --no-plugin-updates shows warnings in the console output
    
    Replace ROLE name with class
    
    Apply multi-catch
    
    Remove more deprecated/overloaded methods
    
    Don't reask resolve questions in case of multimodule projects
    
    No need for reflection anymore
    
    Fix mocking/stubbing tests
    
    [MRELEASE-601] The Maven 2 release plugin modifies CDATA elements in pom.xml files.
    
    [MRELEASE-998] Add ability to create custom phases
    
    Copy javadoc
    
    Add unittest for DefaultVersionPolicy
    
    Reorganize if/then/else -statements to reduce nesting
    
    [MRELEASE-694] -SNAPSHOT is unexpectedly appended to version in branched pom.xml
    
    Pull up commonBasedir
    
    Move AbstractReleasePhase to maven-release-api
    
    releaseDescriptor.getOriginalScmInfo( projectId ) is checked twice, so 1 can be removed.
    
    Switch to Paths, which are more reliable and powerful compared to Files
    
    More Path replacements
    
    Revert "More Path replacements"
    
    This reverts commit 45cd37f5ef610f5f39c73d153c4ed481798e8ee8.
    
    Revert "Switch to Paths, which are more reliable and powerful compared to Files"
    
    This reverts commit 52bfff25ffcccca1061000dc60395090e233d371.
    
    [MRELEASE-1005] Extract ResourceGenerator from ReleasePhase
    
    updated Modello xsd url
    
    Make use of Path instead of File
    
    [MRELEASE-1007] Rework usage workingDirectory and commonBasedir
    
    [MNGSITE-328] use sha1 checksum instead of md5
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873523 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873428 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873366 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873234 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873185 +0100
    
    Fixes for MRELEASE-1009:
    - clean up ambigous reference in JUnit test
    - upgrade Surefire to 2.22.0 to avoid a NullPointerException under Java 10 when executing "mvn package"
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-956] Release Strategy Interface
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fixed improper merge with upstream
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fixed improper merge with upstream
    
    Fixed improper merge with upstream
    
    Fixed Checkstyle error
    
    Javadoc comment improved
    
    [MRELEASE-1010] - Update parent to 32
     o Fixed checkstyle reported errors based on upgrade.
     o Switch to asfMavenTlpPlgnBuild
     o Support https.protocols for JDK 7
     o Removed hard coded version for maven-invoker-plugin now using
       3.0.1 instead of inherited 3.1.0
     o Changed scm version to release 1.10.0 instead of old snapshot version.
    
    [INFRA-16467] move components documentation out of CMS space
    
    [MPOM-205] use sha512 checksums instead of sha1
    
    removed version already inherited from parent
    
    Updated to correct URL.
    
    [MRELEASE-1024] Upgrade to SCM 1.11.2
    
    MRELEASE-985 Override snapshot dependencies from command line
    
     - Copy properties to the correct release descriptor in DefaultReleaseManager.
     - Do not fail the build if the property is resolved from the comand-line (in CheckDependencySnapshotsPhase).
    
    See https://issues.apache.org/jira/browse/MRELEASE-985
    
    [MRELEASE-1023] Minor code cleanups
    
    This closes #22
    
    Expose dependency.dev and dependency.rel properties
    
    As part of this: https://github.com/apache/maven-release/pull/18 and this: https://issues.apache.org/jira/browse/MRELEASE-985
    we need to check if the command line property starts with dependency.dev or dependency.rel to be able to override the value of the
    property.
    
    [MRELEASE-985] Add integration test
    
    improve documentation site
    
    Verify that schemaLocation keeps its original value
    
    Codehaus Jira moved to ASF Jira
    
    switch to https
    
    [MRELEASE-1031] log info on release goals/phases progress
    
    improve landing page
    
    [MRELEASE-1032] add https://m.a.o/xsd/maven-4.0.0.xsd
    
    [MRELEASE-229] implementation of RemoveScmTagPhase, with unit test
    
    this closes #29
    
    remove extraneous commas
    
    @hboutemy
    
    changed error to warn if tag is not present at rollback; fixed typos
    
    Remove unused import
    
    MRELEASE-980 Allow commit comments to be controlled
    
    [maven-release-plugin] prepare release maven-release-3.0.0-M1
    
    [maven-release-plugin] prepare for next development iteration
    
    MRELEASE-1035 upgraded maven-plugin-tools and plexus-component-metadata to reproducible versions
    
    Merge with master
    
    Fix invalid project, flatten module should adjust relativePath
    
    Remove unwanted writes to stderr during unittests
    
    Fix relativePath
    
    With Maven3+ distributionManagement.status not allowed in effective pom
    
    Make org.eclipse.aether:aether-util optional, so maven-artifact-transfer can work with Maven 3.0 too.
    
    Add missing remote extension artifact
    
    Clone incorrectly set project.reporting.excludeDefaults from null to Boolean.FALSE
    
    [MRELEASE-992] Deprecated maven flag --no-plugin-updates shows warnings in the console output
    
    Apply multi-catch
    
    [MRELEASE-601] The Maven 2 release plugin modifies CDATA elements in pom.xml files.
    
    Add unittest for DefaultVersionPolicy
    
    Reorganize if/then/else -statements to reduce nesting
    
    [MRELEASE-694] -SNAPSHOT is unexpectedly appended to version in branched pom.xml
    
    releaseDescriptor.getOriginalScmInfo( projectId ) is checked twice, so 1 can be removed.
    
    [MRELEASE-1005] Extract ResourceGenerator from ReleasePhase
    
    updated Modello xsd url
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873523 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873428 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873366 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873234 +0100
    
    parent 657d4931b23cb2c3caeecfc4cdb376d94c676507
    author Thorsten Heit <th...@gmx.de> 1530186251 +0200
    committer Thorsten Heit <th...@gmx.de> 1576873185 +0100
    
    Fixes for MRELEASE-1009:
    - clean up ambigous reference in JUnit test
    - upgrade Surefire to 2.22.0 to avoid a NullPointerException under Java 10 when executing "mvn package"
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-956] Release Strategy Interface
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fixed improper merge with upstream
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    Fix for MRELEASE-835: Automatically resolve snapshot dependencies in release:prepare
    
    [MRELEASE-998] Add ability to create custom phases
    
    Fixed improper merge with upstream
    
    Fixed improper merge with upstream
    
    Fixed Checkstyle error
    
    Javadoc comment improved
    
    [MRELEASE-1010] - Update parent to 32
     o Fixed checkstyle reported errors based on upgrade.
     o Switch to asfMavenTlpPlgnBuild
     o Support https.protocols for JDK 7
     o Removed hard coded version for maven-invoker-plugin now using
       3.0.1 instead of inherited 3.1.0
     o Changed scm version to release 1.10.0 instead of old snapshot version.
    
    [INFRA-16467] move components documentation out of CMS space
    
    [MPOM-205] use sha512 checksums instead of sha1
    
    removed version already inherited from parent
    
    Updated to correct URL.
    
    [MRELEASE-1024] Upgrade to SCM 1.11.2
    
    MRELEASE-985 Override snapshot dependencies from command line
    
     - Copy properties to the correct release descriptor in DefaultReleaseManager.
     - Do not fail the build if the property is resolved from the comand-line (in CheckDependencySnapshotsPhase).
    
    See https://issues.apache.org/jira/browse/MRELEASE-985
    
    [MRELEASE-1023] Minor code cleanups
    
    This closes #22
    
    Expose dependency.dev and dependency.rel properties
    
    As part of this: https://github.com/apache/maven-release/pull/18 and this: https://issues.apache.org/jira/browse/MRELEASE-985
    we need to check if the command line property starts with dependency.dev or dependency.rel to be able to override the value of the
    property.
    
    [MRELEASE-985] Add integration test
    
    improve documentation site
    
    Verify that schemaLocation keeps its original value
    
    Codehaus Jira moved to ASF Jira
    
    switch to https
    
    [MRELEASE-1031] log info on release goals/phases progress
    
    improve landing page
    
    [MRELEASE-1032] add https://m.a.o/xsd/maven-4.0.0.xsd
    
    [MRELEASE-229] implementation of RemoveScmTagPhase, with unit test
    
    this closes #29
    
    remove extraneous commas
    
    @hboutemy
    
    changed error to warn if tag is not present at rollback; fixed typos
    
    Remove unused import
    
    MRELEASE-980 Allow commit comments to be controlled
    
    [maven-release-plugin] prepare release maven-release-3.0.0-M1
    
    [maven-release-plugin] prepare for next development iteration
    
    MRELEASE-1035 upgraded maven-plugin-tools and plexus-component-metadata to reproducible versions
    
    Merge with master
    
    Removed changes from MRELEASE-549
---
 .../shared/release/config/ReleaseDescriptor.java   |  17 +++-
 .../config/PropertiesReleaseDescriptorStore.java   |   7 +-
 .../release/config/ReleaseDescriptorBuilder.java   |   4 +-
 .../maven/shared/release/config/ReleaseUtils.java  |  10 +-
 .../phase/CheckDependencySnapshotsPhase.java       | 103 +++++++++++++++++----
 .../maven/shared/release/phase/ScmBranchPhase.java |   5 -
 .../maven/shared/release/phase/ScmTagPhase.java    |   7 --
 .../src/main/mdo/release-descriptor.mdo            |  26 ++++--
 .../phase/GenerateReleasePomsPhaseTest.java        |   2 -
 .../release/phase/IsScmBranchParametersEquals.java |   4 +-
 .../release/phase/IsScmTagParametersEquals.java    |   3 +-
 .../phase/ScmCommitDevelopmentPhaseTest.java       |   1 -
 .../phase/ScmCommitPreparationPhaseTest.java       |   1 -
 .../src/it/projects/prepare/MRELEASE-835/pom.xml   |  71 ++++++++++++++
 .../it/projects/prepare/MRELEASE-835/verify.groovy |  28 ++++++
 .../maven/plugins/release/BranchReleaseMojo.java   |  10 --
 .../maven/plugins/release/PrepareReleaseMojo.java  |  24 +++--
 17 files changed, 249 insertions(+), 74 deletions(-)

diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
index a45fd13..8044004 100644
--- a/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
+++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptor.java
@@ -466,10 +466,19 @@ public interface ReleaseDescriptor
     void setScmSourceUrl( String scmUrl );
 
     /**
-     * Get whether the "--pin-externals" option in svn copy commands is enabled
-     * which is new in Subversion 1.9.
+     * Returns whether unresolved SNAPSHOT dependencies should automatically be resolved.
+     * If this is set, then this specifies the default answer to be used when unresolved SNAPSHOT
+     * dependencies should automatically be resolved ( 0:All 1:Project Dependencies 2:Plugins
+     * 3:Reports 4:Extensions ). Possible values are:
+     * <ul>
+     * <li>"all" or "0": resolve all kinds of snapshots, ie. project, plugin, report and extension dependencies </li>
+     * <li>"dependencies" or "1": resolve project dependencies</li>
+     * <li>"plugins" or "2": resolve plugin dependencis</li>
+     * <li>"reports" or "3": resolve report dependencies</li>
+     * <li>"extensions" or "4": resolve extension dependencies</li>
+     * </ul>
      * 
-     * @return boolean
+     * @return String
      */
-    boolean isPinExternals();
+    String getAutoResolveSnapshots();
 }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
index 9fd335c..f1272de 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java
@@ -249,8 +249,6 @@ public class PropertiesReleaseDescriptorStore
 
         properties.setProperty( "remoteTagging", Boolean.toString( config.isRemoteTagging() ) );
 
-        properties.setProperty( "pinExternals", Boolean.toString( config.isPinExternals() ) );
-
         properties.setProperty( "pushChanges", Boolean.toString( config.isPushChanges() ) );
 
         if ( config.getWorkItem() != null )
@@ -258,6 +256,11 @@ public class PropertiesReleaseDescriptorStore
             properties.setProperty( "workItem", config.getWorkItem() );
         }
 
+        if ( config.getAutoResolveSnapshots() != null )
+        {
+            properties.setProperty( "autoResolveSnapshots", config.getAutoResolveSnapshots() );
+        }
+
         // others boolean properties are not written to the properties file because the value from the caller is always
         // used
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
index 8e71be9..629a897 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseDescriptorBuilder.java
@@ -440,9 +440,9 @@ public class ReleaseDescriptorBuilder
         return this;
     }
 
-    public ReleaseDescriptorBuilder setPinExternals( boolean pinExternals )
+    public ReleaseDescriptorBuilder setAutoResolveSnapshots( String autoResolveSnapshots )
     {
-        releaseDescriptor.setPinExternals( pinExternals );
+        releaseDescriptor.setAutoResolveSnapshots( autoResolveSnapshots );
         return this;
     }
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
index 0da9629..bcaf758 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java
@@ -161,11 +161,6 @@ public class ReleaseUtils
             String remoteTaggingStr = properties.getProperty( "remoteTagging" );
             builder.setRemoteTagging( Boolean.valueOf( remoteTaggingStr ) );
         }
-        if ( properties.containsKey( "pinExternals" ) )
-        {
-            String pinExternals = properties.getProperty( "pinExternals" );
-            builder.setPinExternals( Boolean.valueOf( pinExternals ) );
-        }
         if ( properties.containsKey( "pushChanges" ) )
         {
             String pushChanges = properties.getProperty( "pushChanges" );
@@ -175,6 +170,11 @@ public class ReleaseUtils
         {
             builder.setWorkItem( properties.getProperty( "workItem" ) );
         }
+        if ( properties.containsKey( "autoResolveSnapshots" ) )
+        {
+            String resolve = properties.getProperty( "autoResolveSnapshots" );
+            builder.setAutoResolveSnapshots( resolve );
+        }
 
         loadResolvedDependencies( properties, builder );
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
index b19b446..55821c0 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckDependencySnapshotsPhase.java
@@ -144,7 +144,7 @@ public class CheckDependencySnapshotsPhase
         if ( !usedSnapshotDependencies.isEmpty() || !usedSnapshotReports.isEmpty()
                         || !usedSnapshotExtensions.isEmpty() || !usedSnapshotPlugins.isEmpty() )
         {
-            if ( releaseDescriptor.isInteractive() )
+            if ( releaseDescriptor.isInteractive() || null != releaseDescriptor.getAutoResolveSnapshots() )
             {
                 resolveSnapshots( usedSnapshotDependencies, usedSnapshotReports, usedSnapshotExtensions,
                                   usedSnapshotPlugins, releaseDescriptor );
@@ -365,10 +365,19 @@ public class CheckDependencySnapshotsPhase
     {
         try
         {
+            String autoResolveSnapshots = releaseDescriptor.getAutoResolveSnapshots();
             if ( resolveSnapshot == null )
             {
                 prompter.showMessage( RESOLVE_SNAPSHOT_MESSAGE );
-                resolveSnapshot = prompter.prompt( RESOLVE_SNAPSHOT_PROMPT, Arrays.asList( "yes", "no" ), "no" );
+                if ( autoResolveSnapshots != null )
+                {
+                    resolveSnapshot = "yes";
+                    prompter.showMessage( RESOLVE_SNAPSHOT_PROMPT + " " + resolveSnapshot );
+                }
+                else
+                {
+                    resolveSnapshot = prompter.prompt( RESOLVE_SNAPSHOT_PROMPT, Arrays.asList( "yes", "no" ), "no" );
+                }
             }
 
             if ( resolveSnapshot.toLowerCase( Locale.ENGLISH ).startsWith( "y" ) )
@@ -376,38 +385,81 @@ public class CheckDependencySnapshotsPhase
                 if ( resolveSnapshotType == null )
                 {
                     prompter.showMessage( RESOLVE_SNAPSHOT_TYPE_MESSAGE );
-                    resolveSnapshotType =
-                        prompter.prompt( RESOLVE_SNAPSHOT_TYPE_PROMPT, Arrays.asList( "0", "1", "2", "3" ), "1" );
+                    int defaultAnswer = -1;
+                    if ( autoResolveSnapshots != null )
+                    {
+                        if ( "all".equalsIgnoreCase( autoResolveSnapshots ) )
+                        {
+                            defaultAnswer = 0;
+                        }
+                        else if ( "dependencies".equalsIgnoreCase( autoResolveSnapshots ) )
+                        {
+                            defaultAnswer = 1;
+                        }
+                        else if ( "plugins".equalsIgnoreCase( autoResolveSnapshots ) )
+                        {
+                            defaultAnswer = 2;
+                        }
+                        else if ( "reports".equalsIgnoreCase( autoResolveSnapshots ) )
+                        {
+                            defaultAnswer = 3;
+                        }
+                        else if ( "extensions".equalsIgnoreCase( autoResolveSnapshots ) )
+                        {
+                            defaultAnswer = 4;
+                        }
+                        else
+                        {
+                            try
+                            {
+                                defaultAnswer = Integer.parseInt( autoResolveSnapshots );
+                            }
+                            catch ( NumberFormatException e )
+                            {
+                                throw new ReleaseExecutionException( e.getMessage(), e );
+                            }
+                        }
+                    }
+                    if ( defaultAnswer >= 0 && defaultAnswer <= 4 )
+                    {
+                        prompter.showMessage( RESOLVE_SNAPSHOT_TYPE_PROMPT + " " + autoResolveSnapshots );
+                        resolveSnapshotType = Integer.toString( defaultAnswer );
+                    }
+                    else
+                    {
+                        resolveSnapshotType =
+                            prompter.prompt( RESOLVE_SNAPSHOT_TYPE_PROMPT, Arrays.asList( "0", "1", "2", "3" ), "1" );
+                    }
                 }
 
                 switch ( Integer.parseInt( resolveSnapshotType.toLowerCase( Locale.ENGLISH ) ) )
                 {
                     // all
                     case 0:
-                        processSnapshot( projectDependencies, releaseDescriptor );
-                        processSnapshot( pluginDependencies, releaseDescriptor );
-                        processSnapshot( reportDependencies, releaseDescriptor );
-                        processSnapshot( extensionDependencies, releaseDescriptor );
+                        processSnapshot( projectDependencies, releaseDescriptor, autoResolveSnapshots );
+                        processSnapshot( pluginDependencies, releaseDescriptor, autoResolveSnapshots );
+                        processSnapshot( reportDependencies, releaseDescriptor, autoResolveSnapshots );
+                        processSnapshot( extensionDependencies, releaseDescriptor, autoResolveSnapshots );
                         break;
 
                         // project dependencies
                     case 1:
-                        processSnapshot( projectDependencies, releaseDescriptor );
+                        processSnapshot( projectDependencies, releaseDescriptor, autoResolveSnapshots );
                         break;
 
                         // plugins
                     case 2:
-                        processSnapshot( pluginDependencies, releaseDescriptor );
+                        processSnapshot( pluginDependencies, releaseDescriptor, autoResolveSnapshots );
                         break;
 
                         // reports
                     case 3:
-                        processSnapshot( reportDependencies, releaseDescriptor );
+                        processSnapshot( reportDependencies, releaseDescriptor, autoResolveSnapshots );
                         break;
 
                         // extensions
                     case 4:
-                        processSnapshot( extensionDependencies, releaseDescriptor );
+                        processSnapshot( extensionDependencies, releaseDescriptor, autoResolveSnapshots );
                         break;
 
                     default:
@@ -420,7 +472,8 @@ public class CheckDependencySnapshotsPhase
         }
     }
 
-    private void processSnapshot( Set<Artifact> snapshotSet, ReleaseDescriptor releaseDescriptor )
+    private void processSnapshot( Set<Artifact> snapshotSet, ReleaseDescriptor releaseDescriptor,
+                                  String autoResolveSnapshots )
         throws PrompterException, VersionParseException
     {
         Iterator<Artifact> iterator = snapshotSet.iterator();
@@ -435,8 +488,17 @@ public class CheckDependencySnapshotsPhase
 
             prompter.showMessage(
                 "Dependency '" + versionlessKey + "' is a snapshot (" + currentArtifact.getVersion() + ")\n" );
-            String result = prompter.prompt( "Which release version should it be set to?",
-                                             versionInfo.getReleaseVersionString() );
+            String message = "Which release version should it be set to?";
+            String result;
+            if ( null != autoResolveSnapshots )
+            {
+                result = versionInfo.getReleaseVersionString();
+                prompter.showMessage( message + " " + result );
+            }
+            else
+            {
+                result = prompter.prompt( message, versionInfo.getReleaseVersionString() );
+            }
             
             releaseDescriptor.addDependencyReleaseVersion( versionlessKey, result );
 
@@ -456,7 +518,16 @@ public class CheckDependencySnapshotsPhase
                 nextVersion = versionInfo.toString();
             }
 
-            result = prompter.prompt( "What version should the dependency be reset to for development?", nextVersion );
+            message = "What version should the dependency be reset to for development?";
+            if ( null != autoResolveSnapshots )
+            {
+                result = nextVersion;
+                prompter.showMessage( message + " " + result );
+            }
+            else
+            {
+                result = prompter.prompt( message, nextVersion );
+            }
             
             releaseDescriptor.addDependencyDevelopmentVersion( versionlessKey, result );
         }
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
index 8bbde41..d1d85b6 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmBranchPhase.java
@@ -108,7 +108,6 @@ public class ScmBranchPhase
             scmBranchParameters.setMessage( releaseDescriptor.getScmCommentPrefix() + "copy for branch " + branchName );
             scmBranchParameters.setRemoteBranching( releaseDescriptor.isRemoteTagging() );
             scmBranchParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() );
-            scmBranchParameters.setPinExternals( releaseDescriptor.isPinExternals() );
 
             result = provider.branch( repository, fileSet, branchName, scmBranchParameters );
         }
@@ -144,10 +143,6 @@ public class ScmBranchPhase
             logInfo( result, "  To SCM URL: " + releaseDescriptor.getScmBranchBase() );
         }
         logInfo( result, "  with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
-        if ( releaseDescriptor.isPinExternals() )
-        {
-            logInfo( result, "  with pinned externals" );
-        }
 
         result.setResultCode( ReleaseResult.SUCCESS );
 
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
index 6f4f67d..5f52d39 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmTagPhase.java
@@ -120,7 +120,6 @@ public class ScmTagPhase
                 new ScmTagParameters( releaseDescriptor.getScmCommentPrefix() + "copy for tag " + tagName );
             scmTagParameters.setRemoteTagging( releaseDescriptor.isRemoteTagging() );
             scmTagParameters.setScmRevision( releaseDescriptor.getScmReleasedPomRevision() );
-            scmTagParameters.setPinExternals( releaseDescriptor.isPinExternals() );
             if ( getLogger().isDebugEnabled() )
             {
                 getLogger().debug(
@@ -128,8 +127,6 @@ public class ScmTagPhase
                 getLogger().debug(
                     "ScmTagPhase :: scmTagParameters scmRevision " + releaseDescriptor.getScmReleasedPomRevision() );
                 getLogger().debug( "ScmTagPhase :: fileSet  " + fileSet );
-                getLogger().debug(
-                    "ScmTagPhase :: scmTagParameters pinExternals " + releaseDescriptor.isPinExternals() );
             }
             result = provider.tag( repository, fileSet, tagName, scmTagParameters );
         }
@@ -171,10 +168,6 @@ public class ScmTagPhase
             logInfo( result, "Full run would be tagging remotely " + basedirAlignedReleaseDescriptor.getScmSourceUrl()
                 + " with label: '" + releaseDescriptor.getScmReleaseLabel() + "'" );
         }
-        if ( releaseDescriptor.isPinExternals() )
-        {
-            logInfo( result, "Full run would pin externals" );
-        }
 
         result.setResultCode( ReleaseResult.SUCCESS );
 
diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo
index d1d4996..6bf44f2 100644
--- a/maven-release-manager/src/main/mdo/release-descriptor.mdo
+++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo
@@ -564,14 +564,22 @@
         </field>
 
         <field>
-          <name>pinExternals</name>
+          <name>autoResolveSnapshots</name>
           <version>3.0.0+</version>
-          <type>boolean</type>
-          <defaultValue>false</defaultValue>
+          <type>String</type>
           <description>
-            Enable the "--pin-externals" option in svn copy commands which is new in Subversion 1.9.
-            NOTE : Currently only implemented with Subversion.
-            (https://issues.apache.org/jira/browse/SCM-805)
+            <![CDATA[Specifies whether unresolved SNAPSHOT dependencies are automatically resolved.
+            If set, it is used as the answer to use when being asked how unresolved SNAPSHOT 
+            dependencies should be resolved:
+            <ul>
+            <li>"all" or "0": resolve all kinds of snapshots, ie. project, plugin, report and extension dependencies</li>
+            <li>"dependencies" or "1": resolve project dependencies</li>
+            <li>"plugins" or "2": resolve plugin dependencies</li>
+            <li>"reports" or "3": resolve report dependencies</li>
+            <li>"extensions" or "4": resolve extension dependencies</li>
+            </ul>
+            Additionally this implies that the default values for the dependency's release and next
+            development version are used.]]>
           </description>
         </field>
 
@@ -797,7 +805,6 @@
              updateVersionsToSnapshot         != that.isUpdateVersionsToSnapshot()         ||
              allowTimestampedSnapshots        != that.isAllowTimestampedSnapshots()        ||
              remoteTagging                    != that.isRemoteTagging()                    ||
-             pinExternals                     != that.isPinExternals()                     ||
              localCheckout                    != that.isLocalCheckout()                    ||
              pushChanges                      != that.isPushChanges()
            )
@@ -811,7 +818,8 @@
              !java.util.Objects.equals( performGoals, that.getPerformGoals() ) ||
              !java.util.Objects.equals( defaultReleaseVersion, that.getDefaultReleaseVersion() ) ||
              !java.util.Objects.equals( workItem, that.getWorkItem() ) ||
-             !java.util.Objects.equals( scmReleasedPomRevision, that.getScmReleasedPomRevision() )
+             !java.util.Objects.equals( scmReleasedPomRevision, that.getScmReleasedPomRevision() ) ||
+             !java.util.Objects.equals( autoResolveSnapshots, that.getAutoResolveSnapshots() )
            )
         {
             return false;
@@ -1067,7 +1075,7 @@
         result = 29 * result + java.util.Objects.hashCode( defaultReleaseVersion );
         result = 29 * result + java.util.Objects.hashCode( scmReleasedPomRevision );
         result = 29 * result + java.util.Objects.hashCode( workItem );
-        result = 29 * result + java.util.Objects.hashCode( pinExternals );
+        result = 29 * result + java.util.Objects.hashCode( autoResolveSnapshots );
 
         return result;
     }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
index ad381ee..c150589 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/GenerateReleasePomsPhaseTest.java
@@ -117,7 +117,6 @@ public class GenerateReleasePomsPhaseTest
         builder.setGenerateReleasePoms( true );
         builder.setSuppressCommitBeforeTagOrBranch( true );
         builder.setRemoteTagging( false );
-        builder.setPinExternals( false );
         mapNextVersion( builder, "groupId:artifactId" );
 
         phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
@@ -136,7 +135,6 @@ public class GenerateReleasePomsPhaseTest
         builder.setGenerateReleasePoms( true );
         builder.setSuppressCommitBeforeTagOrBranch( true );
         builder.setRemoteTagging( true );
-        builder.setPinExternals( false );
         mapNextVersion( builder, "groupId:artifactId" );
 
         phase.execute( ReleaseUtils.buildReleaseDescriptor( builder ), new DefaultReleaseEnvironment(), reactorProjects );
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
index 8431b85..9fb572f 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmBranchParametersEquals.java
@@ -40,7 +40,7 @@ public class IsScmBranchParametersEquals extends ArgumentMatcher<ScmBranchParame
     {
         ScmBranchParameters sbp = (ScmBranchParameters) argument;
         return sbp.getMessage().equals( this.scmBranchParameters.getMessage() )
-            && sbp.isRemoteBranching() == this.scmBranchParameters.isRemoteBranching()
-            && sbp.isPinExternals() == this.scmBranchParameters.isPinExternals();
+            //&& stp.isRemoteTagging() == this.scmBranchParameters.isRemoteTagging()
+            ;
     }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
index 6196256..0c3dc75 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/IsScmTagParametersEquals.java
@@ -39,7 +39,6 @@ public class IsScmTagParametersEquals extends ArgumentMatcher<ScmTagParameters>
     {
         ScmTagParameters stp = (ScmTagParameters) argument;
         return stp.getMessage().equals( this.scmTagParameters.getMessage() )
-            && stp.isRemoteTagging() == this.scmTagParameters.isRemoteTagging()
-            && stp.isPinExternals() == this.scmTagParameters.isPinExternals();
+            && stp.isRemoteTagging() == this.scmTagParameters.isRemoteTagging();
     }
 }
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
index 8378869..50ba849 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhaseTest.java
@@ -96,7 +96,6 @@ public class ScmCommitDevelopmentPhaseTest
         List<MavenProject> reactorProjects = createReactorProjects();
 
         builder.setRemoteTagging( false );
-        builder.setPinExternals( false );
         builder.setSuppressCommitBeforeTagOrBranch( true );
         builder.setUpdateWorkingCopyVersions( false );
 
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
index 954086c..863cdbd 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/ScmCommitPreparationPhaseTest.java
@@ -488,7 +488,6 @@ public class ScmCommitPreparationPhaseTest
         List<MavenProject> reactorProjects = createReactorProjects();
 
         builder.setRemoteTagging( true );
-        builder.setPinExternals( false );
         builder.setSuppressCommitBeforeTagOrBranch( true );
 
         ScmProvider scmProviderMock = mock( ScmProvider.class );
diff --git a/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/pom.xml b/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/pom.xml
new file mode 100644
index 0000000..38bd07e
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugins.release.its</groupId>
+  <artifactId>mrelease-835</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <scm>
+    <connection>scm:dummy|nul</connection>
+    <developerConnection>scm:dummy|nul</developerConnection>
+  </scm>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <autoResolveSnapshots>dependencies</autoResolveSnapshots>
+          <arguments>-Dflag -Dfoo=bar</arguments>
+          <mavenExecutorId>invoker</mavenExecutorId>
+          <goals>validate</goals>
+          <preparationGoals>validate</preparationGoals>
+          <completionGoals>verify</completionGoals>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.its.release</groupId>
+            <artifactId>maven-scm-provider-dummy</artifactId>
+            <version>1.0</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>dependency</artifactId>
+      <version>1.2.3-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>dependency.test</artifactId>
+      <version>2.3.4-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/verify.groovy b/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/verify.groovy
new file mode 100644
index 0000000..027cc50
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/MRELEASE-835/verify.groovy
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+File buildLog = new File( basedir, 'build.log' )
+assert buildLog.exists()
+
+assert 1 == buildLog.getText().count("[DEBUG]   (f) autoResolveSnapshots = dependencies")
+
+File pomXmlNext = new File( basedir, 'pom.xml.next' )
+assert pomXmlNext.exists()
+assert 1 == pomXmlNext.getText().count("<version>1.2.3</version>")
+assert 1 == pomXmlNext.getText().count("<version>2.3.4</version>")
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
index 05030f0..1cbd467 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/BranchReleaseMojo.java
@@ -230,15 +230,6 @@ public class BranchReleaseMojo
     @Parameter( defaultValue = "@{prefix} prepare branch @{releaseLabel}", property = "scmBranchCommitComment" )
     private String scmBranchCommitComment = "@{prefix} prepare branch @{releaseLabel}";
 
-    /**
-     * Currently only implemented with svn scm. Enable the "--pin-externals" option in svn
-     * copy commands which is new in Subversion 1.9.
-     *
-     * @since 3.0.0
-     */
-    @Parameter( defaultValue = "false", property = "pinExternals" )
-    private boolean pinExternals;
-
     @Override
     public void execute()
         throws MojoExecutionException, MojoFailureException
@@ -263,7 +254,6 @@ public class BranchReleaseMojo
         config.setProjectVersionPolicyId( projectVersionPolicyId );
         config.setProjectNamingPolicyId( projectBranchNamingPolicyId );
         config.setScmBranchCommitComment( scmBranchCommitComment );
-        config.setPinExternals( pinExternals );
 
         if ( checkModificationExcludeList != null )
         {
diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
index f09a24d..9e601c0 100644
--- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
+++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
@@ -281,14 +281,26 @@ public class PrepareReleaseMojo
     private String scmDevelopmentCommitComment = "@{prefix} prepare for next development iteration";
 
     /**
-     * Currently only implemented with svn scm. Enable the "--pin-externals" option in svn
-     * copy commands which is new in Subversion 1.9.
-     *
+     * Specifies whether unresolved SNAPSHOT dependencies should automatically be resolved.
+     * If this is set, then this specifies the default answer to be used when unresolved SNAPSHOT
+     * dependencies should automatically be resolved ( 0:All 1:Project Dependencies 2:Plugins
+     * 3:Reports 4:Extensions ). Possible values are:
+     * <ul>
+     * <li>"all" or "0": resolve all kinds of snapshots, ie. project, plugin, report and extension dependencies </li>
+     * <li>"dependencies" or "1": resolve project dependencies</li>
+     * <li>"plugins" or "2": resolve plugin dependencis</li>
+     * <li>"reports" or "3": resolve report dependencies</li>
+     * <li>"extensions" or "4": resolve extension dependencies</li>
+     * </ul>
+     * 
      * @since 3.0.0
      */
-    @Parameter( defaultValue = "false", property = "pinExternals" )
-    private boolean pinExternals;
+    @Parameter( property = "autoResolveSnapshots" )
+    private String autoResolveSnapshots;
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public void execute()
         throws MojoExecutionException, MojoFailureException
@@ -330,7 +342,7 @@ public class PrepareReleaseMojo
         config.setProjectNamingPolicyId( projectTagNamingPolicyId );
         config.setScmDevelopmentCommitComment( scmDevelopmentCommitComment );
         config.setScmReleaseCommitComment( scmReleaseCommitComment );
-        config.setPinExternals( pinExternals );
+        config.setAutoResolveSnapshots( autoResolveSnapshots );
 
         if ( checkModificationExcludeList != null )
         {