diff --git a/src/main/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGenerator.java b/src/main/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGenerator.java index 445f4fcc..f0691708 100644 --- a/src/main/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGenerator.java +++ b/src/main/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGenerator.java @@ -2,11 +2,12 @@ import java.util.Arrays; import java.util.List; +import java.util.regex.Matcher; import java.util.regex.Pattern; public class Launch4jFileVersionGenerator { private static final int REQUIRED_NESTED_VERSION_LEVELS = 4; - private static final String SIMPLE_PROJECT_VERSION_REGEX = "^((\\d(\\.)?)*\\d+)(-\\w+)?$"; + private static final String SIMPLE_PROJECT_VERSION_REGEX = "^((\\d(\\.)?)*\\d+)(-\\w+)?(?:-(?[\\w.-]+))?(?:\\+(?[\\w.-]+))?$"; private static final Pattern simpleProjectVersionPattern = Pattern.compile( SIMPLE_PROJECT_VERSION_REGEX, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE ); @@ -40,12 +41,13 @@ public static String generate(String projectVersion) { } private static String removeTextFlags(String version) { - if(version.contains("-")) { - String[] parts = version.split("-"); - return parts[0]; + Pattern pattern = Pattern.compile("[-+]"); + Matcher matcher = pattern.matcher(version); + if (matcher.find()) { + return version.substring(0, matcher.start()); + } else { + return version; } - - return version; } private static String cutOffTooManyNestedLevels(String versionLevels) { diff --git a/src/test/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGeneratorTest.java b/src/test/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGeneratorTest.java index 962275ee..faaa032b 100644 --- a/src/test/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGeneratorTest.java +++ b/src/test/java/com/akathist/maven/plugins/launch4j/generators/Launch4jFileVersionGeneratorTest.java @@ -59,6 +59,13 @@ public void shouldFillMissingPlacesByZeros(String projectVersion, String expecte "1.2.1-alpha, 1.2.1.0", "1.2.3.4-beta, 1.2.3.4", "0.0.1-snapshot, 0.0.1.0", + "1.2.3.4-alpha+001, 1.2.3.4", + "1.2.3-alpha+001, 1.2.3.0", + "1.2.3.4-alpha+001, 1.2.3.4", + "1.2.3+20130313144700, 1.2.3.0", + "1.2.3.4+20130313144700, 1.2.3.4", + "1.2.3-beta+exp.sha.5114f85, 1.2.3.0", + "1.2.3.4-beta+exp.sha.5114f85, 1.2.3.4", }) public void shouldCutOffTextFlags(String projectVersion, String expected) { // when