This is an automated email from the ASF dual-hosted git repository.
sjaranowski 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 5106eb19 Introduce new SemVer policies
5106eb19 is described below
commit 5106eb1936a9aa03515792170c897050a5647429
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Fri Nov 21 08:48:35 2025 +0100
Introduce new SemVer policies
- add more SemVer implementations
- improve documentation
- improve tests for version policies
---
.../src/it/projects/prepare/oddeven-policy/pom.xml | 7 +--
.../projects/prepare/oddeven-policy/verify.groovy | 35 ++++++++++++++
.../src/it/projects/prepare/semver-policy/pom.xml | 7 +--
.../projects/prepare/semver-policy/verify.groovy | 35 ++++++++++++++
.../maven/plugins/release/BranchReleaseMojo.java | 2 +-
.../maven/plugins/release/PrepareReleaseMojo.java | 2 +-
.../maven/plugins/release/UpdateVersionsMojo.java | 1 +
.../src/site/markdown/versioning-policies.md | 54 ++++++++++++++++++++++
maven-release-plugin/src/site/site.xml | 1 +
.../maven-release-oddeven-policy/pom.xml | 5 ++
.../oddeven/OddEvenVersionPolicyTestCase.java | 43 +++++++++--------
.../maven-release-semver-policy/pom.xml | 30 +++++++++---
.../semver/AbstarctSemVerVersionPolicy.java} | 43 ++++++++---------
...va => SemVerMajorDevelopmentVersionPolicy.java} | 37 ++++-----------
...y.java => SemVerMajorReleaseVersionPolicy.java} | 37 ++++-----------
...va => SemVerMinorDevelopmentVersionPolicy.java} | 35 ++++----------
...y.java => SemVerMinorReleaseVersionPolicy.java} | 37 ++++-----------
...va => SemVerPatchDevelopmentVersionPolicy.java} | 37 ++++-----------
.../release/policy/semver/SemVerVersionPolicy.java | 42 +++++------------
...> SemVerMajorDevelopmentVersionPolicyTest.java} | 36 ++++++++++-----
...va => SemVerMajorReleaseVersionPolicyTest.java} | 37 ++++++++++-----
...> SemVerMinorDevelopmentVersionPolicyTest.java} | 36 ++++++++++-----
...va => SemVerMinorReleaseVersionPolicyTest.java} | 35 +++++++++-----
...> SemVerPatchDevelopmentVersionPolicyTest.java} | 35 +++++++++-----
.../policy/semver/SemVerVersionPolicyTest.java | 31 +++++++++----
src/site/markdown/index.md | 14 +++---
26 files changed, 409 insertions(+), 305 deletions(-)
diff --git
a/maven-release-plugin/src/it/projects/prepare/oddeven-policy/pom.xml
b/maven-release-plugin/src/it/projects/prepare/oddeven-policy/pom.xml
index 2d0e7d86..e3545be6 100644
--- a/maven-release-plugin/src/it/projects/prepare/oddeven-policy/pom.xml
+++ b/maven-release-plugin/src/it/projects/prepare/oddeven-policy/pom.xml
@@ -22,7 +22,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugin.release.it</groupId>
<artifactId>oddversion-policy</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.1-SNAPSHOT</version>
<scm>
<connection>scm:dummy|nul</connection>
<developerConnection>scm:dummy|nul</developerConnection>
@@ -42,11 +42,6 @@
<artifactId>maven-scm-provider-dummy</artifactId>
<version>1.0</version>
</dependency>
- <dependency>
- <groupId>org.apache.maven.release</groupId>
- <artifactId>maven-release-oddeven-policy</artifactId>
- <version>@project.version@</version>
- </dependency>
</dependencies>
</plugin>
</plugins>
diff --git
a/maven-release-plugin/src/it/projects/prepare/oddeven-policy/verify.groovy
b/maven-release-plugin/src/it/projects/prepare/oddeven-policy/verify.groovy
new file mode 100644
index 00000000..03bcea5f
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/oddeven-policy/verify.groovy
@@ -0,0 +1,35 @@
+/*
+ * 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 groovy.xml.XmlSlurper
+
+// 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() == "1.1-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"
+
+// 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() == "1.3-SNAPSHOT"
diff --git a/maven-release-plugin/src/it/projects/prepare/semver-policy/pom.xml
b/maven-release-plugin/src/it/projects/prepare/semver-policy/pom.xml
index 53059f7a..4e3d901e 100644
--- a/maven-release-plugin/src/it/projects/prepare/semver-policy/pom.xml
+++ b/maven-release-plugin/src/it/projects/prepare/semver-policy/pom.xml
@@ -22,7 +22,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugin.release.it</groupId>
<artifactId>semver-policy</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <version>1.0.1-SNAPSHOT</version>
<scm>
<connection>scm:dummy|nul</connection>
<developerConnection>scm:dummy|nul</developerConnection>
@@ -42,11 +42,6 @@
<artifactId>maven-scm-provider-dummy</artifactId>
<version>1.0</version>
</dependency>
- <dependency>
- <groupId>org.apache.maven.release</groupId>
- <artifactId>maven-release-semver-policy</artifactId>
- <version>@project.version@</version>
- </dependency>
</dependencies>
</plugin>
</plugins>
diff --git
a/maven-release-plugin/src/it/projects/prepare/semver-policy/verify.groovy
b/maven-release-plugin/src/it/projects/prepare/semver-policy/verify.groovy
new file mode 100644
index 00000000..c30ee34f
--- /dev/null
+++ b/maven-release-plugin/src/it/projects/prepare/semver-policy/verify.groovy
@@ -0,0 +1,35 @@
+/*
+ * 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 groovy.xml.XmlSlurper
+
+// 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() == "1.0.1-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.0.1"
+
+// 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() == "1.1.0-SNAPSHOT"
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 d5b5aa6f..0aa2ad60 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
@@ -196,7 +196,7 @@ public class BranchReleaseMojo extends
AbstractScmReadWriteReleaseMojo {
* The role-hint for the {@link
org.apache.maven.shared.release.policy.version.VersionPolicy}
* implementation used to calculate the project versions.
*
- * @see org.apache.maven.shared.release.policies.DefaultVersionPolicy
+ * @see <a href="./versioning-policies.html">Versioning Policies</a>
* @since 3.0.0-M5
*/
@Parameter(defaultValue = "default", property = "projectVersionPolicyId")
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 2bc70869..22fd08ef 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
@@ -244,7 +244,7 @@ public class PrepareReleaseMojo extends
AbstractScmReadWriteReleaseMojo {
* The role-hint for the {@link
org.apache.maven.shared.release.policy.version.VersionPolicy}
* implementation used to calculate the project versions.
*
- * @see org.apache.maven.shared.release.policies.DefaultVersionPolicy
+ * @see <a href="./versioning-policies.html">Versioning Policies</a>
* @since 2.5.1
*/
@Parameter(defaultValue = "default", property = "projectVersionPolicyId")
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 ad9d3b74..ed3be075 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
@@ -89,6 +89,7 @@ public class UpdateVersionsMojo extends AbstractReleaseMojo {
/**
* The role-hint for the VersionPolicy implementation used to calculate
the project versions.
*
+ * @see <a href="./versioning-policies.html">Versioning Policies</a>
* @since 3.0.0-M5
*/
@Parameter(defaultValue = "default", property = "projectVersionPolicyId")
diff --git a/maven-release-plugin/src/site/markdown/versioning-policies.md
b/maven-release-plugin/src/site/markdown/versioning-policies.md
new file mode 100644
index 00000000..22c26cd6
--- /dev/null
+++ b/maven-release-plugin/src/site/markdown/versioning-policies.md
@@ -0,0 +1,54 @@
+---
+title: Versioning Policies
+---
+
+<!-- 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.-->
+
+# Versioning Policies
+
+When performing a release, the Maven Release Plugin needs to determine the
next release and development version.
+
+By default, it simply removes `-SNAPSHOT` for release version and increments
the last digit of the version number for next development.
+
+However, you can customize this behavior by using different version policies,
+by settings the `projectVersionPolicyId` parameter to the desired version
policy.
+
+Maven Release Plugin comes with built-in version policies:
+
+- `default` - increments the last digit of the version number for next
development
+- `OddEvenVersionPolicy` - proposes even version numbers only for releases and
odd numbers for development
+- `SemVerMajorDevelopment` - increases major element for next development
version
+- `SemVerMinorDevelopment` - increases minor element for next development
version
+- `SemVerPatchDevelopment` - increases patch element for next development
version, similar to default policy
+- `SemVerMajorRelease` - increases major element for release version
+- `SemVerMinorRelease` - increases minor element for release version
+
+The `SemVer*` policies enforce [Semantic Versioning](https://semver.org/)
rules.
+
+Examples of version policies:
+
+| projectVersionPolicyId | project version | next release version | next
development version |
+|------------------------|-----------------|----------------------|--------------------------|
+| default | 1.2.3-SNAPSHOT | 1.2.3 |
1.2.4-SNAPSHOT |
+| OddEvenVersionPolicy | 1.0.1-SNAPSHOT | 1.0.2 |
1.0.3-SNAPSHOT |
+| SemVerMajorDevelopment | 1.2.3-SNAPSHOT | 1.2.3 |
2.0.0-SNAPSHOT |
+| SemVerMinorDevelopment | 1.2.3-SNAPSHOT | 1.2.3 |
1.3.0-SNAPSHOT |
+| SemVerPatchDevelopment | 1.2.3-SNAPSHOT | 1.2.3 |
1.2.4-SNAPSHOT |
+| SemVerMajorRelease | 1.2.3-SNAPSHOT | 2.0.0 |
2.0.1-SNAPSHOT |
+| SemVerMinorRelease | 1.2.3-SNAPSHOT | 1.3.0 |
1.3.1-SNAPSHOT |
+
diff --git a/maven-release-plugin/src/site/site.xml
b/maven-release-plugin/src/site/site.xml
index bfdce7c0..6c964f5f 100644
--- a/maven-release-plugin/src/site/site.xml
+++ b/maven-release-plugin/src/site/site.xml
@@ -52,6 +52,7 @@ under the License.
<item name="Create a Branch" href="usage/branch.html" />
<item name="Update POM Versions" href="usage/update-versions.html" />
</item>
+ <item name="Versioning Policies" href="versioning-policies.html" />
<item name="Migrate" href="migrate.html" />
<item name="FAQ" href="faq.html" />
<!-- According to https://issues.apache.org/jira/browse/MNGSITE-152 -->
diff --git a/maven-release-policies/maven-release-oddeven-policy/pom.xml
b/maven-release-policies/maven-release-oddeven-policy/pom.xml
index c02ffa62..bd9ba91d 100644
--- a/maven-release-policies/maven-release-oddeven-policy/pom.xml
+++ b/maven-release-policies/maven-release-oddeven-policy/pom.xml
@@ -69,6 +69,11 @@
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/maven-release-policies/maven-release-oddeven-policy/src/test/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicyTestCase.java
b/maven-release-policies/maven-release-oddeven-policy/src/test/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicyTestCase.java
index 5999a073..0d32721a 100644
---
a/maven-release-policies/maven-release-oddeven-policy/src/test/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicyTestCase.java
+++
b/maven-release-policies/maven-release-oddeven-policy/src/test/java/org/apache/maven/shared/release/policy/oddeven/OddEvenVersionPolicyTestCase.java
@@ -20,7 +20,8 @@ package org.apache.maven.shared.release.policy.oddeven;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -28,31 +29,37 @@ final class OddEvenVersionPolicyTestCase {
private final VersionPolicy versionPolicy = new OddEvenVersionPolicy();
- @Test
- void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.0.1-SNAPSHOT",
+ "1.0.1, 1.0.3-SNAPSHOT",
+ "1.0.2, 1.0.3-SNAPSHOT",
+ "1.1.0, 1.1.1-SNAPSHOT",
+ "1.1.1, 1.1.3-SNAPSHOT"
+ })
+ void testConvertToSnapshot(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.1-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.0.0",
+ "1.0.1-SNAPSHOT, 1.0.2",
+ "1.0.2-SNAPSHOT, 1.0.2",
+ "1.0.3-SNAPSHOT, 1.0.4",
+ "1.1.0-SNAPSHOT, 1.1.0",
+ "1.1.1-SNAPSHOT, 1.1.2"
+ })
+ void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
- }
-
- @Test
- void testConvertOddToRelease() throws Exception {
- String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.1-SNAPSHOT"))
- .getVersion();
-
- assertEquals("1.0.2", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git a/maven-release-policies/maven-release-semver-policy/pom.xml
b/maven-release-policies/maven-release-semver-policy/pom.xml
index 547491c8..f38eb937 100644
--- a/maven-release-policies/maven-release-semver-policy/pom.xml
+++ b/maven-release-policies/maven-release-semver-policy/pom.xml
@@ -30,7 +30,7 @@
<artifactId>maven-release-semver-policy</artifactId>
<name>Maven Release SemVer Policy</name>
- <description>A version policy that enforce SemVer format and upgrades minor
element for next development version.</description>
+ <description>Version policies that enforce SemVer format</description>
<dependencies>
<dependency>
@@ -44,10 +44,23 @@
<artifactId>api</artifactId>
<version>0.9.33</version>
<exclusions>
+ <!-- only one class Version from semver api is used, avoid bringing in
unnecessary dependencies -->
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>de.tototec</groupId>
+ <artifactId>de.tototec.cmdoption</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>jsr305</artifactId>
+ </exclusion>
</exclusions>
</dependency>
@@ -56,17 +69,22 @@
<artifactId>javax.inject</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.eclipse.sisu</groupId>
- <artifactId>org.eclipse.sisu.inject</artifactId>
- <scope>provided</scope>
- </dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/AbstarctSemVerVersionPolicy.java
similarity index 52%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/AbstarctSemVerVersionPolicy.java
index af6da78b..7608fb54 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/AbstarctSemVerVersionPolicy.java
@@ -20,33 +20,30 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.apache.maven.shared.release.policy.version.VersionPolicyResult;
+import org.apache.maven.shared.release.versions.VersionParseException;
+import org.semver.Version;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public final class SemVerVersionPolicyTest {
-
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
-
- @Test
- public void testConvertToSnapshot() throws Exception {
- String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
- .getVersion();
-
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+/**
+ * Abstract base class for SemVer-based VersionPolicy implementations.
+ *
+ * @since 3.3.0
+ */
+abstract class AbstarctSemVerVersionPolicy implements VersionPolicy {
+
+ protected Version createVersionFromRequest(VersionPolicyRequest request)
throws VersionParseException {
+ try {
+ return Version.parse(request.getVersion());
+ } catch (IllegalArgumentException e) {
+ throw new VersionParseException(e.getMessage());
+ }
}
- @Test
- public void testConvertToRelease() throws Exception {
- String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
- .getVersion();
-
- assertEquals("1.0.0", suggestedVersion);
+ protected VersionPolicyResult createResult(Version version) {
+ return new VersionPolicyResult().setVersion(version.toString());
}
- private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
- return new VersionPolicyRequest().setVersion(version);
+ protected VersionPolicyResult createSnapshotResult(Version version) {
+ return new VersionPolicyResult().setVersion(version.toString() +
"-SNAPSHOT");
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicy.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicy.java
index 3a47d3bf..6a93c550 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicy.java
@@ -21,48 +21,29 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
/**
- * Uses SemVer implementation to increase minor element when resolving the
development version.
+ * Uses SemVer implementation to increase major element when resolving the
development version.
+ *
+ * @since 3.3.0
*/
@Singleton
-@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Named("SemVerMajorDevelopment")
+public class SemVerMajorDevelopmentVersionPolicy extends
AbstarctSemVerVersionPolicy {
@Override
public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
+ Version version = createVersionFromRequest(request).toReleaseVersion();
+ return createResult(version);
}
@Override
public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ Version version =
createVersionFromRequest(request).next(Version.Element.MAJOR);
+ return createSnapshotResult(version);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicy.java
similarity index 55%
copy from
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicy.java
index 3a47d3bf..db750693 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicy.java
@@ -21,48 +21,29 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
/**
- * Uses SemVer implementation to increase minor element when resolving the
development version.
+ * Uses SemVer implementation to increase major element when resolving the
release version.
+ *
+ * @since 3.3.0
*/
@Singleton
-@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Named("SemVerMajorRelease")
+public class SemVerMajorReleaseVersionPolicy extends
AbstarctSemVerVersionPolicy {
@Override
public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
+ Version version =
createVersionFromRequest(request).toReleaseVersion().next(Version.Element.MAJOR);
+ return createResult(version);
}
@Override
public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ Version version =
createVersionFromRequest(request).next(Version.Element.PATCH);
+ return createSnapshotResult(version);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicy.java
similarity index 59%
copy from
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicy.java
index 3a47d3bf..00437109 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicy.java
@@ -21,48 +21,29 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
/**
* Uses SemVer implementation to increase minor element when resolving the
development version.
+ *
+ * @since 3.3.0
*/
@Singleton
-@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Named("SemVerMinorDevelopment")
+public class SemVerMinorDevelopmentVersionPolicy extends
AbstarctSemVerVersionPolicy {
@Override
public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
+ Version version = createVersionFromRequest(request).toReleaseVersion();
+ return createResult(version);
}
@Override
public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ Version version =
createVersionFromRequest(request).next(Version.Element.MINOR);
+ return createSnapshotResult(version);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicy.java
similarity index 58%
copy from
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicy.java
index 3a47d3bf..f9debea5 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicy.java
@@ -21,48 +21,29 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
/**
- * Uses SemVer implementation to increase minor element when resolving the
development version.
+ * Uses SemVer implementation to increase minor element when resolving the
release version.
+ *
+ * @since 3.3.0
*/
@Singleton
-@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Named("SemVerMinorRelease")
+public class SemVerMinorReleaseVersionPolicy extends
AbstarctSemVerVersionPolicy {
@Override
public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
+ Version version =
createVersionFromRequest(request).toReleaseVersion().next(Version.Element.MINOR);
+ return createResult(version);
}
@Override
public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ Version version =
createVersionFromRequest(request).next(Version.Element.PATCH);
+ return createSnapshotResult(version);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicy.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
copy to
maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicy.java
index 3a47d3bf..a0ca4d82 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicy.java
@@ -21,48 +21,29 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
/**
- * Uses SemVer implementation to increase minor element when resolving the
development version.
+ * Uses SemVer implementation to increase patch element when resolving the
development version.
+ *
+ * @since 3.3.0
*/
@Singleton
-@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Named("SemVerPatchDevelopment")
+public class SemVerPatchDevelopmentVersionPolicy extends
AbstarctSemVerVersionPolicy {
@Override
public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
+ Version version = createVersionFromRequest(request).toReleaseVersion();
+ return createResult(version);
}
@Override
public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ Version version =
createVersionFromRequest(request).next(Version.Element.PATCH);
+ return createSnapshotResult(version);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
index 3a47d3bf..50bfc88f 100644
---
a/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
+++
b/maven-release-policies/maven-release-semver-policy/src/main/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicy.java
@@ -21,48 +21,28 @@ package org.apache.maven.shared.release.policy.semver;
import javax.inject.Named;
import javax.inject.Singleton;
-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.semver.Version;
-import org.semver.Version.Element;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Uses SemVer implementation to increase minor element when resolving the
development version.
+ *
+ * @deprecated use {@link SemVerMinorDevelopmentVersionPolicy} instead.
*/
@Singleton
@Named("SemVerVersionPolicy")
-@Description("A VersionPolicy following the SemVer rules")
-public class SemVerVersionPolicy implements VersionPolicy {
+@Deprecated
+public class SemVerVersionPolicy extends SemVerMinorDevelopmentVersionPolicy {
- @Override
- public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version.toReleaseVersion().toString());
- return result;
- }
+ private final Logger logger =
LoggerFactory.getLogger(SemVerVersionPolicy.class);
@Override
- public VersionPolicyResult getDevelopmentVersion(VersionPolicyRequest
request) throws VersionParseException {
- Version version;
- try {
- version = Version.parse(request.getVersion());
- } catch (IllegalArgumentException e) {
- throw new VersionParseException(e.getMessage());
- }
-
- version = version.next(Element.MINOR);
- VersionPolicyResult result = new VersionPolicyResult();
- result.setVersion(version + "-SNAPSHOT");
- return result;
+ public VersionPolicyResult getReleaseVersion(VersionPolicyRequest request)
throws VersionParseException {
+ logger.warn("SemVerVersionPolicy is deprecated and will be removed in
future releases. "
+ + "Please use SemVerMinorDevelopment instead.");
+ return super.getReleaseVersion(request);
}
}
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicyTest.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicyTest.java
index af6da78b..17c3bc00 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorDevelopmentVersionPolicyTest.java
@@ -20,30 +20,42 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public final class SemVerVersionPolicyTest {
+class SemVerMajorDevelopmentVersionPolicyTest {
+ private final VersionPolicy versionPolicy = new
SemVerMajorDevelopmentVersionPolicy();
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
-
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 2.0.0-SNAPSHOT",
+ "1.2.3, 2.0.0-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.0.0",
+ "1.2.3-SNAPSHOT, 1.2.3",
+ "1.0.0-alpha-SNAPSHOT, 1.0.0",
+ "1.0.0+build.1-SNAPSHOT, 1.0.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicyTest.java
similarity index 56%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicyTest.java
index af6da78b..1908962c 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMajorReleaseVersionPolicyTest.java
@@ -20,30 +20,43 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public final class SemVerVersionPolicyTest {
+class SemVerMajorReleaseVersionPolicyTest {
+ private final VersionPolicy versionPolicy = new
SemVerMajorReleaseVersionPolicy();
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
-
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.0.1-SNAPSHOT",
+ "2.0.0, 2.0.1-SNAPSHOT",
+ "1.2.3, 1.2.4-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 2.0.0",
+ "1.2.3-SNAPSHOT, 2.0.0",
+ "1.0.0-alpha-SNAPSHOT, 2.0.0",
+ "1.0.0+build.1-SNAPSHOT, 2.0.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicyTest.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicyTest.java
index af6da78b..c79131ab 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorDevelopmentVersionPolicyTest.java
@@ -20,30 +20,42 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public final class SemVerVersionPolicyTest {
+class SemVerMinorDevelopmentVersionPolicyTest {
+ private final VersionPolicy versionPolicy = new
SemVerMinorDevelopmentVersionPolicy();
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
-
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.1.0-SNAPSHOT",
+ "1.2.3, 1.3.0-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.0.0",
+ "1.2.3-SNAPSHOT, 1.2.3",
+ "1.0.0-alpha-SNAPSHOT, 1.0.0",
+ "1.0.0+build.1-SNAPSHOT, 1.0.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicyTest.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicyTest.java
index af6da78b..1aa65d4b 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerMinorReleaseVersionPolicyTest.java
@@ -20,30 +20,43 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public final class SemVerVersionPolicyTest {
+class SemVerMinorReleaseVersionPolicyTest {
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
+ private final VersionPolicy versionPolicy = new
SemVerMinorReleaseVersionPolicy();
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.0.1-SNAPSHOT",
+ "1.2.3, 1.2.4-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.1.0",
+ "1.2.3-SNAPSHOT, 1.3.0",
+ "1.0.0-alpha-SNAPSHOT, 1.1.0",
+ "1.0.0+build.1-SNAPSHOT, 1.1.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicyTest.java
similarity index 57%
copy from
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
copy to
maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicyTest.java
index af6da78b..ee812c1f 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerPatchDevelopmentVersionPolicyTest.java
@@ -20,30 +20,43 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
-public final class SemVerVersionPolicyTest {
+class SemVerPatchDevelopmentVersionPolicyTest {
- private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
+ private final VersionPolicy versionPolicy = new
SemVerPatchDevelopmentVersionPolicy();
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.0.1-SNAPSHOT",
+ "1.2.3, 1.2.4-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.0.0",
+ "1.2.3-SNAPSHOT, 1.2.3",
+ "1.0.0-alpha-SNAPSHOT, 1.0.0",
+ "1.0.0+build.1-SNAPSHOT, 1.0.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
index af6da78b..3645c250 100644
---
a/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
+++
b/maven-release-policies/maven-release-semver-policy/src/test/java/org/apache/maven/shared/release/policy/semver/SemVerVersionPolicyTest.java
@@ -20,7 +20,8 @@ package org.apache.maven.shared.release.policy.semver;
import org.apache.maven.shared.release.policy.version.VersionPolicy;
import org.apache.maven.shared.release.policy.version.VersionPolicyRequest;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -28,22 +29,34 @@ public final class SemVerVersionPolicyTest {
private final VersionPolicy versionPolicy = new SemVerVersionPolicy();
- @Test
- public void testConvertToSnapshot() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0, 1.1.0-SNAPSHOT",
+ "1.2.3, 1.3.0-SNAPSHOT",
+ "1.0.0-alpha, 1.0.0-SNAPSHOT",
+ "1.0.0+build.1, 1.0.0-SNAPSHOT"
+ })
+ public void testConvertToSnapshot(String requested, String expected)
throws Exception {
String suggestedVersion = versionPolicy
- .getDevelopmentVersion(newVersionPolicyRequest("1.0.0"))
+ .getDevelopmentVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.1.0-SNAPSHOT", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
- @Test
- public void testConvertToRelease() throws Exception {
+ @ParameterizedTest
+ @CsvSource({
+ "1.0.0-SNAPSHOT, 1.0.0",
+ "1.2.3-SNAPSHOT, 1.2.3",
+ "1.0.0-alpha-SNAPSHOT, 1.0.0",
+ "1.0.0+build.1-SNAPSHOT, 1.0.0"
+ })
+ public void testConvertToRelease(String requested, String expected) throws
Exception {
String suggestedVersion = versionPolicy
- .getReleaseVersion(newVersionPolicyRequest("1.0.0-SNAPSHOT"))
+ .getReleaseVersion(newVersionPolicyRequest(requested))
.getVersion();
- assertEquals("1.0.0", suggestedVersion);
+ assertEquals(expected, suggestedVersion);
}
private static VersionPolicyRequest newVersionPolicyRequest(String
version) {
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
index 7e599dcc..154356e8 100644
--- a/src/site/markdown/index.md
+++ b/src/site/markdown/index.md
@@ -27,10 +27,10 @@ Maven Release provides tooling to release a project with
Maven, saving a lot of
It consists of the following modules:
-|Module|Description|
-|:---|:---|
-|[maven-release-api](./maven-release-api/)|APIs to implement to extend
maven-release-plugin|
-|[maven-release-manager](./maven-release-manager/)|core classes|
-|[maven-release-plugin](./maven-release-plugin/)|release plugin to use from
Maven|
-|[maven-release-oddeven-policy](./maven-release-policies/maven-release-oddeven-policy/)|a
version policy that proposes even version numbers only for releases and odd
numbers for development|
-|[maven-release-semver-policy](./maven-release-policies/maven-release-semver-policy/)|a
version policy that enforces SemVer format and upgrades the minor element for
the next development version|
+| Module
| Description
|
+|:---------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------|
+| [maven-release-api](./maven-release-api/)
| APIs to implement to extend maven-release-plugin
|
+| [maven-release-manager](./maven-release-manager/)
| core classes
|
+| [maven-release-plugin](./maven-release-plugin/)
| release plugin to use from Maven
|
+|
[maven-release-oddeven-policy](./maven-release-policies/maven-release-oddeven-policy/)
| a version policy that proposes even version numbers only for releases and
odd numbers for development |
+|
[maven-release-semver-policy](./maven-release-policies/maven-release-semver-policy/)
| version policies that enforces [Semantic Versioning](https://semver.org/)
format |