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 <[email protected]> AuthorDate: Sun Nov 26 22:37:39 2017 +0000 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433024 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433018 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433016 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433015 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433011 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578433009 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578432997 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578432995 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578432994 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 1578432986 +0100 parent ce04d7f8b3c2ffb77821b17d8507371892dd01da author Stephen Connolly <[email protected]> 1511735859 +0000 committer Thorsten Heit <[email protected]> 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 <[email protected]> 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 <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873523 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873428 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873366 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873234 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 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 <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873523 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873428 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873366 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 1576873234 +0100 parent 657d4931b23cb2c3caeecfc4cdb376d94c676507 author Thorsten Heit <[email protected]> 1530186251 +0200 committer Thorsten Heit <[email protected]> 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 ) {
