This is an automated email from the ASF dual-hosted git repository. michaelo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-release.git
The following commit(s) were added to refs/heads/master by this push: new b899ace1 [MRELEASE-1078] Support version policy to read and use SCM tags and commits b899ace1 is described below commit b899ace1b448a29aa7645aecc91b519673079e39 Author: Niels Basjes <ni...@basjes.nl> AuthorDate: Sat Feb 12 16:38:40 2022 +0100 [MRELEASE-1078] Support version policy to read and use SCM tags and commits This closes #104 --- maven-release-api/pom.xml | 4 + .../shared/release/config/ReleaseDescriptor.java | 7 + .../policy/version/VersionPolicyRequest.java | 98 +++++++++++- .../release/versions/VersionParseException.java | 10 ++ maven-release-manager/pom.xml | 1 - .../config/PropertiesReleaseDescriptorStore.java | 4 + .../release/config/ReleaseDescriptorBuilder.java | 12 ++ .../maven/shared/release/config/ReleaseUtils.java | 4 + .../release/phase/AbstractMapVersionsPhase.java | 68 +++++++- .../release/phase/MapBranchVersionsPhase.java | 6 +- .../release/phase/MapDevelopmentVersionsPhase.java | 6 +- .../release/phase/MapReleaseVersionsPhase.java | 6 +- .../src/main/mdo/release-descriptor.mdo | 9 ++ .../PropertiesReleaseDescriptorStoreTest.java | 3 + .../shared/release/phase/MapVersionsPhaseTest.java | 174 +++++++++++---------- .../src/it/projects/prepare/version-policy/pom.xml | 56 +++++++ .../projects/prepare/version-policy/verify.groovy | 58 +++++++ .../maven/scm/provider/dummy/DummyScmProvider.java | 19 +++ .../scm/provider/dummy/DummyTagsScmProvider.java | 115 ++++++++++++++ .../maven-version-policy-dummy/invoker.properties | 18 +++ .../it/setup/maven-version-policy-dummy/pom.xml | 92 +++++++++++ .../its/release/version/DummyVersionPolicy.java | 82 ++++++++++ .../maven/plugins/release/BranchReleaseMojo.java | 13 ++ .../maven/plugins/release/PrepareReleaseMojo.java | 13 ++ .../maven/plugins/release/UpdateVersionsMojo.java | 14 +- maven-release-plugin/src/site/apt/usage.apt.vm | 1 + 26 files changed, 792 insertions(+), 101 deletions(-) diff --git a/maven-release-api/pom.xml b/maven-release-api/pom.xml index 76f24821..543900c3 100644 --- a/maven-release-api/pom.xml +++ b/maven-release-api/pom.xml @@ -52,6 +52,10 @@ <groupId>org.apache.maven</groupId> <artifactId>maven-settings</artifactId> </dependency> + <dependency> + <groupId>org.apache.maven.scm</groupId> + <artifactId>maven-scm-api</artifactId> + </dependency> <dependency> <groupId>org.eclipse.aether</groupId> <artifactId>aether-api</artifactId> 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 6ca7c0f0..26a078d8 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 @@ -426,6 +426,13 @@ public interface ReleaseDescriptor */ String getProjectVersionPolicyId(); + /** + * Get the (optional) config for the VersionPolicy implementation used to calculate the project versions. + * + * @return The parsed XML of the provided config (an instance of XmlPlexusConfiguration) or null. + */ + Object getProjectVersionPolicyConfig(); + /** * Get the role-hint for the release Strategy implementation. * diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java index 4001b871..9c771089 100644 --- a/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java +++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/policy/version/VersionPolicyRequest.java @@ -20,6 +20,8 @@ package org.apache.maven.shared.release.policy.version; */ import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.scm.provider.ScmProvider; +import org.apache.maven.scm.repository.ScmRepository; /** * <p>VersionPolicyRequest class.</p> @@ -33,6 +35,12 @@ public class VersionPolicyRequest private Metadata metaData; + private ScmRepository scmRepository; + private ScmProvider scmProvider; + private String workingDirectory; + + private String config; + /** * <p>Getter for the field <code>version</code>.</p> * @@ -76,5 +84,93 @@ public class VersionPolicyRequest this.metaData = metaData; return this; } - + + /** + * <p>Getter for the field <code>scmRepository</code>.</p> + * + * @return a {@link ScmRepository} object + */ + public ScmRepository getScmRepository() + { + return scmRepository; + } + + /** + * <p>Setter for the field <code>scmRepository</code>.</p> + * + * @param scmRepository The {@link ScmRepository} where the history can be retrieved. + * @return a {@link org.apache.maven.shared.release.policy.version.VersionPolicyRequest} object + */ + public VersionPolicyRequest setScmRepository( ScmRepository scmRepository ) + { + this.scmRepository = scmRepository; + return this; + } + + /** + * <p>Getter for the field <code>scmProvider</code>.</p> + * + * @return a {@link ScmProvider} object + */ + public ScmProvider getScmProvider() + { + return scmProvider; + } + + /** + * <p>Setter for the field <code>scmProvider</code>.</p> + * + * @param scmProvider The {@link ScmProvider} where the history can be retrieved. + * @return a {@link org.apache.maven.shared.release.policy.version.VersionPolicyRequest} object + */ + public VersionPolicyRequest setScmProvider( ScmProvider scmProvider ) + { + this.scmProvider = scmProvider; + return this; + } + + /** + * <p>Getter for the field <code>workingDirectory</code>.</p> + * + * @return the {@link String} that contains the workingDirectory (can be null or empty). + */ + public String getWorkingDirectory() + { + return workingDirectory; + } + + /** + * <p>Setter for the field <code>workingDirectory</code>.</p> + * + * @param workingDirectory The {@link String} that contains the workingDirectory (can be null or empty). + * @return a {@link org.apache.maven.shared.release.policy.version.VersionPolicyRequest} object + */ + public VersionPolicyRequest setWorkingDirectory( String workingDirectory ) + { + this.workingDirectory = workingDirectory; + return this; + } + + /** + * <p>Getter for the field <code>config</code>.</p> + * + * @return the {@link String} that contains the config (can be null or empty). + */ + public String getConfig() + { + return config; + } + + /** + * <p>Setter for the field <code>config</code>.</p> + * + * @param config The {@link String} that contains the config (can be null or empty). + * @return a {@link org.apache.maven.shared.release.policy.version.VersionPolicyRequest} object + */ + public VersionPolicyRequest setConfig( String config ) + { + this.config = config; + return this; + } + } diff --git a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java index 8d24cb11..ec8ed5d4 100644 --- a/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java +++ b/maven-release-api/src/main/java/org/apache/maven/shared/release/versions/VersionParseException.java @@ -34,4 +34,14 @@ public class VersionParseException { super( message ); } + + /** + * <p>Constructor for VersionParseException.</p> + * + * @param message a {@link java.lang.String} object + */ + public VersionParseException( String message, Throwable e ) + { + super( message, e ); + } } diff --git a/maven-release-manager/pom.xml b/maven-release-manager/pom.xml index 98345bc1..7488a60d 100644 --- a/maven-release-manager/pom.xml +++ b/maven-release-manager/pom.xml @@ -191,7 +191,6 @@ <dependency> <groupId>org.eclipse.sisu</groupId> <artifactId>org.eclipse.sisu.plexus</artifactId> - <scope>test</scope> </dependency> <dependency> 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 fdacb6d2..9d3246c0 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 @@ -269,6 +269,10 @@ public class PropertiesReleaseDescriptorStore { properties.setProperty( "projectVersionPolicyId", config.getProjectVersionPolicyId() ); } + if ( config.getProjectVersionPolicyConfig() != null ) + { + properties.setProperty( "projectVersionPolicyConfig", config.getProjectVersionPolicyConfig().toString() ); + } if ( config.getProjectNamingPolicyId() != null ) { properties.setProperty( "projectNamingPolicyId", config.getProjectNamingPolicyId() ); 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 6940d31d..5b81f703 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 @@ -401,6 +401,18 @@ public class ReleaseDescriptorBuilder return this; } + /** + * <p>setProjectVersionPolicyConfig.</p> + * + * @param setProjectVersionPolicyConfig a {@link java.lang.String} object + * @return a {@link org.apache.maven.shared.release.config.ReleaseDescriptorBuilder} object + */ + public ReleaseDescriptorBuilder setProjectVersionPolicyConfig( String setProjectVersionPolicyConfig ) + { + releaseDescriptor.setProjectVersionPolicyConfig( setProjectVersionPolicyConfig ); + return this; + } + /** * <p>setPushChanges.</p> * 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 3847b52d..2d24e35c 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 @@ -156,6 +156,10 @@ public class ReleaseUtils { builder.setProjectVersionPolicyId( properties.getProperty( "projectVersionPolicyId" ) ); } + if ( properties.containsKey( "projectVersionPolicyConfig" ) ) + { + builder.setProjectVersionPolicyConfig( properties.getProperty( "projectVersionPolicyConfig" ) ); + } if ( properties.containsKey( "projectNamingPolicyId" ) ) { builder.setProjectNamingPolicyId( properties.getProperty( "projectNamingPolicyId" ) ); diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractMapVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractMapVersionsPhase.java index 97617f35..53e20efa 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractMapVersionsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractMapVersionsPhase.java @@ -24,6 +24,10 @@ import java.util.Map; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.project.MavenProject; +import org.apache.maven.scm.manager.NoSuchScmProviderException; +import org.apache.maven.scm.provider.ScmProvider; +import org.apache.maven.scm.repository.ScmRepository; +import org.apache.maven.scm.repository.ScmRepositoryException; import org.apache.maven.shared.release.ReleaseExecutionException; import org.apache.maven.shared.release.ReleaseResult; import org.apache.maven.shared.release.config.ReleaseDescriptor; @@ -31,11 +35,13 @@ import org.apache.maven.shared.release.env.ReleaseEnvironment; import org.apache.maven.shared.release.policy.PolicyException; import org.apache.maven.shared.release.policy.version.VersionPolicy; import org.apache.maven.shared.release.policy.version.VersionPolicyRequest; +import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.apache.maven.shared.release.util.ReleaseUtil; import org.apache.maven.shared.release.versions.VersionParseException; import org.codehaus.plexus.components.interactivity.Prompter; import org.codehaus.plexus.components.interactivity.PrompterException; import org.codehaus.plexus.util.StringUtils; +import org.slf4j.Logger; import static java.util.Objects.requireNonNull; import static org.apache.maven.shared.utils.logging.MessageUtils.buffer; @@ -70,6 +76,11 @@ import static org.apache.maven.shared.utils.logging.MessageUtils.buffer; public abstract class AbstractMapVersionsPhase extends AbstractReleasePhase { + /** + * Tool that gets a configured SCM repository from release configuration. + */ + private final ScmRepositoryConfigurator scmRepositoryConfigurator; + /** * Component used to prompt for input. */ @@ -90,9 +101,11 @@ public abstract class AbstractMapVersionsPhase */ private final boolean convertToBranch; - public AbstractMapVersionsPhase( Prompter prompter, Map<String, VersionPolicy> versionPolicies, + public AbstractMapVersionsPhase( ScmRepositoryConfigurator scmRepositoryConfigurator, + Prompter prompter, Map<String, VersionPolicy> versionPolicies, boolean convertToSnapshot, boolean convertToBranch ) { + this.scmRepositoryConfigurator = requireNonNull( scmRepositoryConfigurator ); this.prompter = requireNonNull( prompter ); this.versionPolicies = requireNonNull( versionPolicies ); this.convertToSnapshot = convertToSnapshot; @@ -116,7 +129,7 @@ public abstract class AbstractMapVersionsPhase String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ); - String nextVersion = resolveNextVersion( project, projectId, releaseDescriptor ); + String nextVersion = resolveNextVersion( project, projectId, releaseDescriptor, releaseEnvironment ); if ( !convertToSnapshot ) { @@ -182,7 +195,7 @@ public abstract class AbstractMapVersionsPhase { String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ); - String nextVersion = resolveNextVersion( project, projectId, releaseDescriptor ); + String nextVersion = resolveNextVersion( project, projectId, releaseDescriptor, releaseEnvironment ); if ( !convertToSnapshot ) { @@ -206,7 +219,8 @@ public abstract class AbstractMapVersionsPhase private String resolveNextVersion( MavenProject project, String projectId, - ReleaseDescriptor releaseDescriptor ) + ReleaseDescriptor releaseDescriptor, + ReleaseEnvironment releaseEnvironment ) throws ReleaseExecutionException { String defaultVersion; @@ -275,14 +289,15 @@ public abstract class AbstractMapVersionsPhase { suggestedVersion = resolveSuggestedVersion( baseVersion, - releaseDescriptor.getProjectVersionPolicyId() ); + releaseDescriptor, + releaseEnvironment ); } catch ( VersionParseException e ) { if ( releaseDescriptor.isInteractive() ) { suggestedVersion = - resolveSuggestedVersion( "1.0", releaseDescriptor.getProjectVersionPolicyId() ); + resolveSuggestedVersion( "1.0", releaseDescriptor, releaseEnvironment ); } else { @@ -347,9 +362,12 @@ public abstract class AbstractMapVersionsPhase return "new development"; } - private String resolveSuggestedVersion( String baseVersion, String policyId ) + private String resolveSuggestedVersion( String baseVersion, + ReleaseDescriptor releaseDescriptor, + ReleaseEnvironment releaseEnvironment ) throws PolicyException, VersionParseException { + String policyId = releaseDescriptor.getProjectVersionPolicyId(); VersionPolicy policy = versionPolicies.get( policyId ); if ( policy == null ) { @@ -357,6 +375,42 @@ public abstract class AbstractMapVersionsPhase } VersionPolicyRequest request = new VersionPolicyRequest().setVersion( baseVersion ); + + if ( releaseDescriptor.getProjectVersionPolicyConfig() != null ) + { + request.setConfig( releaseDescriptor.getProjectVersionPolicyConfig().toString() ); + } + request.setWorkingDirectory( releaseDescriptor.getWorkingDirectory() ); + + if ( scmRepositoryConfigurator != null && releaseDescriptor.getScmSourceUrl() != null ) + { + try + { + ScmRepository repository = scmRepositoryConfigurator + .getConfiguredRepository( releaseDescriptor, releaseEnvironment.getSettings() ); + + ScmProvider provider = scmRepositoryConfigurator + .getRepositoryProvider( repository ); + + request.setScmRepository( repository ); + request.setScmProvider( provider ); + } + catch ( ScmRepositoryException | NoSuchScmProviderException e ) + { + Logger logger = getLogger(); + if ( logger.isWarnEnabled() ) + { + logger.warn( "Next Version will NOT be based on the version control: {}", e.getMessage() ); + } + else + { + if ( logger.isDebugEnabled() ) + { + logger.warn( "Next Version will NOT be based on the version control", e ); + } + } + } + } return convertToSnapshot ? policy.getDevelopmentVersion( request ).getVersion() : policy.getReleaseVersion( request ).getVersion(); } diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapBranchVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapBranchVersionsPhase.java index ae81496f..c3a3cb92 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapBranchVersionsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapBranchVersionsPhase.java @@ -26,6 +26,7 @@ import javax.inject.Singleton; import java.util.Map; import org.apache.maven.shared.release.policy.version.VersionPolicy; +import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.codehaus.plexus.components.interactivity.Prompter; /** @@ -61,8 +62,9 @@ public class MapBranchVersionsPhase extends AbstractMapVersionsPhase { @Inject - public MapBranchVersionsPhase( Prompter prompter, Map<String, VersionPolicy> versionPolicies ) + public MapBranchVersionsPhase( ScmRepositoryConfigurator scmRepositoryConfigurator, + Prompter prompter, Map<String, VersionPolicy> versionPolicies ) { - super( prompter, versionPolicies, true, true ); + super( scmRepositoryConfigurator, prompter, versionPolicies, true, true ); } } diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapDevelopmentVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapDevelopmentVersionsPhase.java index d0ab04af..76c2efc1 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapDevelopmentVersionsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapDevelopmentVersionsPhase.java @@ -26,6 +26,7 @@ import javax.inject.Singleton; import java.util.Map; import org.apache.maven.shared.release.policy.version.VersionPolicy; +import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.codehaus.plexus.components.interactivity.Prompter; /** @@ -61,8 +62,9 @@ public class MapDevelopmentVersionsPhase extends AbstractMapVersionsPhase { @Inject - public MapDevelopmentVersionsPhase( Prompter prompter, Map<String, VersionPolicy> versionPolicies ) + public MapDevelopmentVersionsPhase( ScmRepositoryConfigurator scmRepositoryConfigurator, + Prompter prompter, Map<String, VersionPolicy> versionPolicies ) { - super( prompter, versionPolicies, true, false ); + super( scmRepositoryConfigurator, prompter, versionPolicies, true, false ); } } diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapReleaseVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapReleaseVersionsPhase.java index c785f8ab..9627c3a0 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapReleaseVersionsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/MapReleaseVersionsPhase.java @@ -26,6 +26,7 @@ import javax.inject.Singleton; import java.util.Map; import org.apache.maven.shared.release.policy.version.VersionPolicy; +import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.codehaus.plexus.components.interactivity.Prompter; /** @@ -61,8 +62,9 @@ public class MapReleaseVersionsPhase extends AbstractMapVersionsPhase { @Inject - public MapReleaseVersionsPhase( Prompter prompter, Map<String, VersionPolicy> versionPolicies ) + public MapReleaseVersionsPhase( ScmRepositoryConfigurator scmRepositoryConfigurator, + Prompter prompter, Map<String, VersionPolicy> versionPolicies ) { - super( prompter, versionPolicies, false, false ); + super( scmRepositoryConfigurator, prompter, versionPolicies, false, false ); } } diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo index 0a1d8cd5..a752ff69 100644 --- a/maven-release-manager/src/main/mdo/release-descriptor.mdo +++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo @@ -488,6 +488,15 @@ The role-hint for the VersionPolicy implementation used to calculate the project versions. </description> </field> + <field> + <name>projectVersionPolicyConfig</name> + <version>3.0.0+</version> + <type>DOM</type> + <description> + The optional config string for the VersionPolicy implementation used to calculate the project versions. + The format of this depends on the specific VersionPolicy that is used. + </description> + </field> <field> <name>projectNamingPolicyId</name> <version>3.0.0+</version> diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java index 27e03d98..a45861c7 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStoreTest.java @@ -367,6 +367,9 @@ public class PropertiesReleaseDescriptorStoreTest builder.addReleaseVersion( "groupId:artifactId", "1.0" ); builder.addDevelopmentVersion( "groupId:artifactId", "1.1-SNAPSHOT" ); + // The actual kind of string you will get when setting the projectVersionPolicyConfig + builder.setProjectVersionPolicyConfig("<projectVersionPolicyConfig><foo>bar</foo></projectVersionPolicyConfig>"); + IdentifiedScm scm = new IdentifiedScm(); scm.setId( "id-write" ); scm.setConnection( "connection-write" ); diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java index 8c8196ec..804a7629 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/MapVersionsPhaseTest.java @@ -47,6 +47,7 @@ import org.apache.maven.shared.release.config.ReleaseUtils; import org.apache.maven.shared.release.env.DefaultReleaseEnvironment; import org.apache.maven.shared.release.policy.PolicyException; import org.apache.maven.shared.release.policy.version.VersionPolicy; +import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.apache.maven.shared.release.versions.VersionParseException; import org.codehaus.plexus.components.interactivity.Prompter; import org.codehaus.plexus.components.interactivity.PrompterException; @@ -63,6 +64,9 @@ import org.mockito.MockitoAnnotations; public class MapVersionsPhaseTest extends PlexusJUnit4TestCase { + @Mock + private ScmRepositoryConfigurator scmRepositoryConfigurator; + @Mock private Prompter mockPrompter; @@ -93,7 +97,7 @@ public class MapVersionsPhaseTest MavenProject project = createProject( "artifactId", "1.0-SNAPSHOT" ); when( mockPrompter.prompt( startsWith( "What is the release version for \"" + project.getName() + "\"?" ), eq( "1.0" ) ) ).thenReturn( "2.0" ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -118,7 +122,7 @@ public class MapVersionsPhaseTest MavenProject project = createProject( "artifactId", "1.0-SNAPSHOT" ); when( mockPrompter.prompt( startsWith( "What is the release version for \"" + project.getName() + "\"?" ), eq( "1.0" ) ) ).thenReturn( "2.0" ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -143,7 +147,7 @@ public class MapVersionsPhaseTest MavenProject project = createProject( "artifactId", "1.0-SNAPSHOT" ); when( mockPrompter.prompt( startsWith( "What is the release version for \"" + project.getName() + "\"?" ), eq( "1.0" ) ) ).thenReturn( "1.0.0" ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -181,7 +185,7 @@ public class MapVersionsPhaseTest MavenProject project = createProject( "artifactId", "SNAPSHOT" ); when( mockPrompter.prompt( startsWith( "What is the release version for \"" + project.getName() + "\"?" ), eq( "1.0" ) ) ).thenReturn( "2.0" ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -219,7 +223,7 @@ public class MapVersionsPhaseTest // prepare List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "SNAPSHOT" ) ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder(); builder.addReleaseVersion( "groupId:artifactId", "2.0" ); @@ -259,7 +263,7 @@ public class MapVersionsPhaseTest List<MavenProject> reactorProjects = Arrays.asList( rootProject, moduleProject ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder() .setInteractive(false) // batch mode @@ -301,7 +305,7 @@ public class MapVersionsPhaseTest List<MavenProject> reactorProjects = Arrays.asList( rootProject, moduleProject ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder() .setInteractive( false ) // batch mode @@ -333,7 +337,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0-SNAPSHOT" ) ); @@ -353,7 +357,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0-SNAPSHOT" ) ); @@ -376,7 +380,7 @@ public class MapVersionsPhaseTest MavenProject project = createProject( "artifactId", "1.0" ); when( mockPrompter.prompt( startsWith( "What is the new development version for \"" + project.getName() + "\"?" ), eq( "1.1-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -411,7 +415,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); MavenProject project = createProject( "artifactId", "1.0" ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -443,7 +447,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0" ) ); @@ -477,7 +481,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0" ) ); ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder(); @@ -511,7 +515,7 @@ public class MapVersionsPhaseTest // prepare when( mockPrompter.prompt( isA( String.class ), isA( String.class ) ) ).thenThrow( new PrompterException( "..." ) ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0" ) ); @@ -557,7 +561,7 @@ public class MapVersionsPhaseTest when( mockPrompter.prompt( startsWith( "What is the new development version for \"" + project.getName() + "\"?" ), eq( "1.1-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( project ); @@ -587,7 +591,7 @@ public class MapVersionsPhaseTest @Test public void testAdjustVersionNonInteractive() { - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "foo" ) ); @@ -625,7 +629,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -647,7 +651,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -669,7 +673,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -692,7 +696,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -715,7 +719,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -737,7 +741,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -759,7 +763,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -780,7 +784,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -801,7 +805,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -823,7 +827,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -845,7 +849,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -866,7 +870,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -887,7 +891,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -909,7 +913,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -931,7 +935,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -953,7 +957,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -975,7 +979,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -998,7 +1002,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1021,7 +1025,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1044,7 +1048,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1067,7 +1071,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1090,7 +1094,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1113,7 +1117,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1136,7 +1140,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1159,7 +1163,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1183,7 +1187,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1207,7 +1211,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1236,7 +1240,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1265,7 +1269,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1292,7 +1296,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1319,7 +1323,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1344,7 +1348,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1369,7 +1373,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1393,7 +1397,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1422,7 +1426,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1449,7 +1453,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1476,7 +1480,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.1-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1508,7 +1512,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.1-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1540,7 +1544,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1568,7 +1572,7 @@ public class MapVersionsPhaseTest // org.apache.maven.release:maven-release-manager:[2.4,) > 1.3-SNAPSHOT when( mockPrompter.prompt( startsWith( "What is the branch version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1591,7 +1595,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1618,7 +1622,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1645,7 +1649,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1667,7 +1671,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1689,7 +1693,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1711,7 +1715,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1735,7 +1739,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1757,7 +1761,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1779,7 +1783,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1801,7 +1805,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1823,7 +1827,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1849,7 +1853,7 @@ public class MapVersionsPhaseTest throws Exception { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2" ) ); @@ -1877,7 +1881,7 @@ public class MapVersionsPhaseTest // prepare when( mockPrompter.prompt( startsWith( "What is the new working copy version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1899,7 +1903,7 @@ public class MapVersionsPhaseTest // prepare when( mockPrompter.prompt( startsWith( "What is the new working copy version for" ), eq( "1.3-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2-SNAPSHOT" ) ); @@ -1919,7 +1923,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = new ArrayList<>(); Collections.addAll( reactorProjects, createProject( "artifactId", "1.2-SNAPSHOT" ), @@ -1944,7 +1948,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = new ArrayList<>(); Collections.addAll( reactorProjects, createProject( "artifactId", "1.2-SNAPSHOT" ), @@ -1969,7 +1973,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2.1-SNAPSHOT" ) ); @@ -1993,7 +1997,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2.1-SNAPSHOT" ) ); @@ -2017,7 +2021,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2.1-SNAPSHOT" ) ); @@ -2041,7 +2045,7 @@ public class MapVersionsPhaseTest throws Exception { // verify - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.2.1-SNAPSHOT" ) ); @@ -2065,8 +2069,8 @@ public class MapVersionsPhaseTest public void testUnusualVersions1() throws Exception { - MapReleaseVersionsPhase mapReleasephase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); - MapDevelopmentVersionsPhase mapDevelopmentphase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase mapReleasephase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase mapDevelopmentphase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "MYB_200909-SNAPSHOT" ) ); @@ -2096,7 +2100,7 @@ public class MapVersionsPhaseTest when( mockPrompter.prompt( startsWith( "What is the new development version for " ), eq( "1.12-SNAPSHOT" ) ) ).thenReturn( "2.0" ) // wrong, expected SNAPSHOT .thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); @@ -2118,7 +2122,7 @@ public class MapVersionsPhaseTest // prepare when( mockPrompter.prompt( startsWith( "What is the new development version for " ), eq( "1.12-SNAPSHOT" ) ) ).thenReturn( "2.0-SNAPSHOT" ); - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); @@ -2140,7 +2144,7 @@ public class MapVersionsPhaseTest // prepare when( mockPrompter.prompt( startsWith( "What is the release version for " ), eq( "1.11" ) ) ).thenReturn( "2.0" ); - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); @@ -2161,7 +2165,7 @@ public class MapVersionsPhaseTest public void testNonExistentVersionPolicy() { // prepare - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "artifactId", "1.0-SNAPSHOT" ) ); @@ -2178,7 +2182,7 @@ public class MapVersionsPhaseTest public void testUpdateBranchInvalidDefaultReleaseVersion_NonInteractive() { // prepare - MapBranchVersionsPhase phase = new MapBranchVersionsPhase( mockPrompter, versionPolicies ); + MapBranchVersionsPhase phase = new MapBranchVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); @@ -2202,7 +2206,7 @@ public class MapVersionsPhaseTest public void testUpdateReleaseInvalidDefaultReleaseVersion_NonInteractive() { // prepare - MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( mockPrompter, versionPolicies ); + MapReleaseVersionsPhase phase = new MapReleaseVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); @@ -2225,7 +2229,7 @@ public class MapVersionsPhaseTest public void testUpdateDevelopmentInvalidDefaultDevelopmentVersion_NonInteractive() { // prepare - MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( mockPrompter, versionPolicies ); + MapDevelopmentVersionsPhase phase = new MapDevelopmentVersionsPhase( scmRepositoryConfigurator, mockPrompter, versionPolicies ); List<MavenProject> reactorProjects = Collections.singletonList( createProject( "bar", "1.11-SNAPSHOT" ) ); diff --git a/maven-release-plugin/src/it/projects/prepare/version-policy/pom.xml b/maven-release-plugin/src/it/projects/prepare/version-policy/pom.xml new file mode 100644 index 00000000..c896d0f2 --- /dev/null +++ b/maven-release-plugin/src/it/projects/prepare/version-policy/pom.xml @@ -0,0 +1,56 @@ +<?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.plugin.release.it</groupId> + <artifactId>version-policy</artifactId> + <version>0.1.2-SNAPSHOT</version> + <scm> + <connection>scm:dummytags|nul</connection> + <developerConnection>scm:dummytags|nul</developerConnection> + </scm> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>@project.version@</version> + <configuration> + <projectVersionPolicyId>DummyVersionPolicy</projectVersionPolicyId> + <projectVersionPolicyConfig><DummyConfig>One</DummyConfig></projectVersionPolicyConfig> + </configuration> + <dependencies> + <dependency> + <groupId>org.apache.maven.its.release</groupId> + <artifactId>maven-scm-provider-dummy</artifactId> + <version>1.0</version> + </dependency> + + <dependency> + <groupId>org.apache.maven.its.release</groupId> + <artifactId>maven-version-policy-dummy</artifactId> + <version>1.0</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-release-plugin/src/it/projects/prepare/version-policy/verify.groovy b/maven-release-plugin/src/it/projects/prepare/version-policy/verify.groovy new file mode 100644 index 00000000..9426c2a6 --- /dev/null +++ b/maven-release-plugin/src/it/projects/prepare/version-policy/verify.groovy @@ -0,0 +1,58 @@ +/* + * 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("[INPUT:Version] #0.1.2-SNAPSHOT#") + +assert 1 == buildLog.getText().count("[INPUT:Config] #<projectVersionPolicyConfig><DummyConfig>One</DummyConfig>") + +// Only check the last part to avoid path separator issues on Windows and such +assert 1 == buildLog.getText().count("version-policy# [INPUT:WorkingDirectory]") + +// Do we get comments and tags? +assert 1 == buildLog.getText().count("[INPUT:Changeset[0].comment] #Commit 19#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[0].tag] ##") + +assert 1 == buildLog.getText().count("[INPUT:Changeset[4].comment] #Commit 15#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[4].tag] #tag 1,tag 2#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[5].comment] #feat(it): This is a new feature.#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[5].tag] ##") + +assert 1 == buildLog.getText().count("[INPUT:Changeset[13].comment] #Commit 6#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[13].tag] #tag 4#") + +assert 1 == buildLog.getText().count("[INPUT:Changeset[17].comment] #Commit 2#") +assert 1 == buildLog.getText().count("[INPUT:Changeset[17].tag] #v1.2.3#") + +// The pom based version is NOT related to what the actual version will be. +File pomXml = new File( basedir, 'pom.xml' ) +assert pomXml.exists() +assert new XmlSlurper().parse( pomXml ).version.text() == "0.1.2-SNAPSHOT" + +// The actual version is hard coded +File pomXmlTag = new File( basedir, 'pom.xml.tag' ) +assert pomXmlTag.exists() +assert new XmlSlurper().parse( pomXmlTag ).version.text() == "1.2.3" + +// The next development version is hard coded +File pomXmlNext = new File( basedir, 'pom.xml.next' ) +assert pomXmlNext.exists() +assert new XmlSlurper().parse( pomXmlNext ).version.text() == "4.5.6-SNAPSHOT" diff --git a/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyScmProvider.java b/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyScmProvider.java index d71b2c5e..877c1358 100644 --- a/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyScmProvider.java +++ b/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyScmProvider.java @@ -1,5 +1,24 @@ package org.apache.maven.scm.provider.dummy; +/* + * 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. + */ + import javax.inject.Named; import javax.inject.Singleton; diff --git a/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyTagsScmProvider.java b/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyTagsScmProvider.java new file mode 100644 index 00000000..b46215a5 --- /dev/null +++ b/maven-release-plugin/src/it/setup/maven-scm-provider-dummy/src/main/java/org/apache/maven/scm/provider/dummy/DummyTagsScmProvider.java @@ -0,0 +1,115 @@ +package org.apache.maven.scm.provider.dummy; + +/* + * 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. + */ + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.apache.maven.scm.ChangeSet; +import org.apache.maven.scm.CommandParameters; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmResult; +import org.apache.maven.scm.command.changelog.ChangeLogScmRequest; +import org.apache.maven.scm.command.changelog.ChangeLogScmResult; +import org.apache.maven.scm.command.changelog.ChangeLogSet; +import org.apache.maven.scm.command.status.StatusScmResult; +import org.apache.maven.scm.provider.AbstractScmProvider; +import org.apache.maven.scm.provider.ScmProviderRepository; + +import java.util.Arrays; +import java.util.Date; + +/** + * A dummy SCM provider used to provide commit messages and tags for testing Version Policies that need this. + * + * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="dummytags" + * @author Niels Basjes + */ +@Singleton +@Named( "dummytags" ) +public class DummyTagsScmProvider + extends AbstractScmProvider +{ + + public String getScmType() + { + return "dummytags"; + } + + public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter ) + { + return new DummyScmProviderRepository(); + } + + @Override + protected StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) + { + return new StatusScmResult( "", "", "", true ); + } + + private ChangeSet changeSet(String comment, String... tags) + { + ChangeSet changeSet = new ChangeSet(); + changeSet.setComment( comment ); + changeSet.setAuthor( "Someone <some...@example.nl>" ); + changeSet.setTags( Arrays.asList( tags ) ); + return changeSet; + } + + @Override + public ChangeLogScmResult changeLog(ChangeLogScmRequest request) + { + Date from = new Date( 39817800000L ); + Date to = new Date( 1644768534785L ); + ChangeLogSet changeLogSet = new ChangeLogSet( + Arrays.asList( + changeSet( "Commit 19" ), + changeSet( "Commit 18" ), + changeSet( "Commit 17" ), + changeSet( "Commit 16" ), + changeSet( "Commit 15", "tag 1", "tag 2" ), + changeSet( "feat(it): This is a new feature." ), // For Conventional Commits. + changeSet( "Commit 13" ), + changeSet( "Commit 12", "tag 3" ), + changeSet( "Commit 11" ), + changeSet( "Commit 10" ), + changeSet( "Commit 9" ), + changeSet( "Commit 8" ), + changeSet( "Commit 7" ), + changeSet( "Commit 6", "tag 4" ), + changeSet( "Commit 5" ), + changeSet( "Commit 4" ), + changeSet( "Commit 3" ), + changeSet( "Commit 2", "v1.2.3" ), // For Conventional Commits. + changeSet( "Commit 1" ), + changeSet( "Commit 0" ) + ), from, to + ); + + ScmResult scmResult = new ScmResult( + "No command", + "Special for testing Scm based version policies", + "No command output", + true + ); + return new ChangeLogScmResult( changeLogSet, scmResult ); + } + +} diff --git a/maven-release-plugin/src/it/setup/maven-version-policy-dummy/invoker.properties b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/invoker.properties new file mode 100644 index 00000000..d5d6ca5d --- /dev/null +++ b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/invoker.properties @@ -0,0 +1,18 @@ +# 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. + +invoker.goals = install diff --git a/maven-release-plugin/src/it/setup/maven-version-policy-dummy/pom.xml b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/pom.xml new file mode 100644 index 00000000..0c48446d --- /dev/null +++ b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/pom.xml @@ -0,0 +1,92 @@ +<?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.its.release</groupId> + <artifactId>maven-version-policy-dummy</artifactId> + <version>1.0</version> + + <name>Maven Version Policy Dummy</name> + <description> + Provides a dummy version policy. It will ALWAYS output version 1.2.3 and log the provided settings. + </description> + + <dependencies> + <dependency> + <groupId>org.apache.maven.release</groupId> + <artifactId>maven-release-api</artifactId> + <version>@project.version@</version> + </dependency> + + <dependency> + <groupId>org.apache.maven.scm</groupId> + <artifactId>maven-scm-api</artifactId> + <version>@scmVersion@</version> + </dependency> + + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.inject</artifactId> + <version>@sisuVersion@</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + <version>1</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>@slf4jVersion@</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>@mavenCompilerPluginVersion@</version> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> + <groupId>org.eclipse.sisu</groupId> + <artifactId>sisu-maven-plugin</artifactId> + <version>@sisuVersion@</version> + <executions> + <execution> + <id>index-project</id> + <goals> + <goal>main-index</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/maven-release-plugin/src/it/setup/maven-version-policy-dummy/src/main/java/org/apache/maven/its/release/version/DummyVersionPolicy.java b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/src/main/java/org/apache/maven/its/release/version/DummyVersionPolicy.java new file mode 100644 index 00000000..221d1bee --- /dev/null +++ b/maven-release-plugin/src/it/setup/maven-version-policy-dummy/src/main/java/org/apache/maven/its/release/version/DummyVersionPolicy.java @@ -0,0 +1,82 @@ +/* + * 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. + */ + +package org.apache.maven.its.release.version; + +import org.apache.maven.scm.ChangeSet; +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.command.changelog.ChangeLogScmRequest; +import org.apache.maven.scm.command.changelog.ChangeLogScmResult; +import org.apache.maven.shared.release.policy.version.VersionPolicy; +import org.apache.maven.shared.release.policy.version.VersionPolicyRequest; +import org.apache.maven.shared.release.policy.version.VersionPolicyResult; +import org.apache.maven.shared.release.versions.VersionParseException; +import org.eclipse.sisu.Description; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Named; +import javax.inject.Singleton; +import java.io.File; + +@Singleton +@Named( "DummyVersionPolicy" ) +@Description( "A dummy VersionPolicy that always gives version 1.2.3. and only logs the provided input." ) +public class DummyVersionPolicy implements VersionPolicy +{ + private static final Logger LOG = LoggerFactory.getLogger( DummyVersionPolicy.class ); + + public VersionPolicyResult getReleaseVersion( VersionPolicyRequest request ) + { + LOG.info("[INPUT:Config] #{}# [INPUT:Config]", request.getConfig()); + LOG.info("[INPUT:Version] #{}# [INPUT:Version]", request.getVersion()); + LOG.info("[INPUT:WorkingDirectory] #{}# [INPUT:WorkingDirectory]", request.getWorkingDirectory()); + + ChangeLogScmRequest changeLogRequest = new ChangeLogScmRequest( + request.getScmRepository(), + new ScmFileSet(new File(request.getWorkingDirectory())) + ); + + ChangeLogScmResult changeLog; + try { + changeLog = request.getScmProvider().changeLog(changeLogRequest); + } catch (ScmException e) { + throw new RuntimeException(e); + } + + int index=0 ; + for (ChangeSet changeSet : changeLog.getChangeLog().getChangeSets()) { + LOG.info("[INPUT:Changeset[{}].comment] #{}#", index, changeSet.getComment()); + LOG.info("[INPUT:Changeset[{}].tag] #{}#", index, String.join(",", changeSet.getTags())); + index++; + } + + VersionPolicyResult result = new VersionPolicyResult(); + result.setVersion("1.2.3"); + return result; + } + + public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest request) + throws VersionParseException { + VersionPolicyResult result = new VersionPolicyResult(); + result.setVersion("4.5.6-SNAPSHOT"); + return result; + } +} 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 2c18d588..05b51f1b 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 @@ -30,6 +30,7 @@ import org.apache.maven.shared.release.ReleaseBranchRequest; import org.apache.maven.shared.release.ReleaseExecutionException; import org.apache.maven.shared.release.ReleaseFailureException; import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; /** * Branch a project in SCM, using the same steps as the <code>release:prepare</code> goal, creating a branch instead of @@ -200,6 +201,14 @@ public class BranchReleaseMojo @Parameter( defaultValue = "default", property = "projectVersionPolicyId" ) private String projectVersionPolicyId; + /** + * Optional config for the VersionPolicy implementation used to calculate the project versions. + * + * @since 3.0.0-M8 + */ + @Parameter( property = "projectVersionPolicyConfig" ) + private XmlPlexusConfiguration projectVersionPolicyConfig; + /** * The role-hint for the {@link org.apache.maven.shared.release.policy.naming.NamingPolicy} * implementation used to calculate the project names. @@ -260,6 +269,10 @@ public class BranchReleaseMojo config.setDefaultDevelopmentVersion( developmentVersion ); config.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeBranch ); config.setProjectVersionPolicyId( projectVersionPolicyId ); + if ( projectVersionPolicyConfig != null ) + { + config.setProjectVersionPolicyConfig( projectVersionPolicyConfig.toString() ); + } config.setProjectNamingPolicyId( projectBranchNamingPolicyId ); config.setScmBranchCommitComment( scmBranchCommitComment ); config.setPinExternals( pinExternals ); 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 16b5d24a..f02f050e 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 @@ -34,6 +34,7 @@ import org.apache.maven.shared.release.ReleaseExecutionException; import org.apache.maven.shared.release.ReleaseFailureException; import org.apache.maven.shared.release.ReleasePrepareRequest; import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; /** * Prepare for a release in SCM. Steps through several phases to ensure the POM is ready to be released and then @@ -240,6 +241,14 @@ public class PrepareReleaseMojo @Parameter( defaultValue = "default", property = "projectVersionPolicyId" ) private String projectVersionPolicyId; + /** + * Optional config for the VersionPolicy implementation used to calculate the project versions. + * + * @since 3.0.0-M8 + */ + @Parameter( property = "projectVersionPolicyConfig" ) + private XmlPlexusConfiguration projectVersionPolicyConfig; + /** * The role-hint for the {@link org.apache.maven.shared.release.policy.naming.NamingPolicy} * implementation used to calculate the project branch and tag names. @@ -382,6 +391,10 @@ public class PrepareReleaseMojo config.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeTag ); config.setWaitBeforeTagging( waitBeforeTagging ); config.setProjectVersionPolicyId( projectVersionPolicyId ); + if ( projectVersionPolicyConfig != null ) + { + config.setProjectVersionPolicyConfig( projectVersionPolicyConfig.toString() ); + } config.setProjectNamingPolicyId( projectTagNamingPolicyId ); config.setScmDevelopmentCommitComment( scmDevelopmentCommitComment ); config.setScmReleaseCommitComment( scmReleaseCommitComment ); diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java index 33c93d11..801db127 100644 --- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java +++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/UpdateVersionsMojo.java @@ -29,6 +29,7 @@ import org.apache.maven.shared.release.ReleaseExecutionException; import org.apache.maven.shared.release.ReleaseFailureException; import org.apache.maven.shared.release.ReleaseUpdateVersionsRequest; import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder; +import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; /** * Update the POM versions for a project. This performs the normal version updates of the <code>release:prepare</code> @@ -93,6 +94,14 @@ public class UpdateVersionsMojo @Parameter( defaultValue = "default", property = "projectVersionPolicyId" ) private String projectVersionPolicyId; + /** + * Optional config for the VersionPolicy implementation used to calculate the project versions. + * + * @since 3.0.0-M8 + */ + @Parameter( property = "projectVersionPolicyConfig" ) + private XmlPlexusConfiguration projectVersionPolicyConfig; + @Override public void execute() throws MojoExecutionException, MojoFailureException @@ -104,7 +113,10 @@ public class UpdateVersionsMojo config.setScmUseEditMode( useEditMode ); config.setUpdateDependencies( updateDependencies ); config.setProjectVersionPolicyId( projectVersionPolicyId ); - + if ( projectVersionPolicyConfig != null ) + { + config.setProjectVersionPolicyConfig( projectVersionPolicyConfig.toString() ); + } config.addOriginalScmInfo( ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ), project.getScm() ); diff --git a/maven-release-plugin/src/site/apt/usage.apt.vm b/maven-release-plugin/src/site/apt/usage.apt.vm index d0aa9996..e8f13fce 100644 --- a/maven-release-plugin/src/site/apt/usage.apt.vm +++ b/maven-release-plugin/src/site/apt/usage.apt.vm @@ -5,6 +5,7 @@ Brett Porter <br...@apache.org> John Tolentino <jtolent...@apache.org> Robert Scholte <rfscho...@apache.org> + Niels Basjes <nielsbas...@apache.org> ------ 2011-11-10 ------