You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2023/01/07 13:38:06 UTC
[maven-enforcer] branch master updated: [MENFORCER-444] Improve error message for failed version rules (#218)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
The following commit(s) were added to refs/heads/master by this push:
new 49ff49a [MENFORCER-444] Improve error message for failed version rules (#218)
49ff49a is described below
commit 49ff49a66cc92f573d73fe9ce1f7eb98eff1a597
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Sat Jan 7 14:38:01 2023 +0100
[MENFORCER-444] Improve error message for failed version rules (#218)
Convert lower bound only value to proper range string in message
---
.../maven/plugins/enforcer/AbstractVersionEnforcer.java | 12 ++++++++++--
.../maven/plugins/enforcer/RequireJavaVersion.java | 17 ++++++++++++++---
.../maven/plugins/enforcer/TestRequireJavaVersion.java | 2 +-
3 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
index 609de91..4e1bf62 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
@@ -77,12 +77,12 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
vr = VersionRange.createFromVersionSpec(requiredVersionRange);
if (containsVersion(vr, actualVersion)) {
- log.debug(msg + " is allowed in the range " + requiredVersionRange + ".");
+ log.debug(msg + " is allowed in the range " + toString(vr) + ".");
} else {
String message = getMessage();
if (StringUtils.isEmpty(message)) {
- message = msg + " is not in the allowed range " + vr + ".";
+ message = msg + " is not in the allowed range " + toString(vr) + ".";
}
throw new EnforcerRuleException(message);
@@ -95,6 +95,14 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
}
}
+ protected static String toString(VersionRange vr) {
+ // as recommended version is used as lower bound in this context modify the string representation
+ if (vr.getRecommendedVersion() != null) {
+ return "[" + vr.getRecommendedVersion().toString() + ",)";
+ } else {
+ return vr.toString();
+ }
+ }
/**
* Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default
* containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" ==
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
index 87ea432..39b1733 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
@@ -27,6 +27,8 @@ import java.util.regex.Pattern;
import org.apache.commons.lang3.SystemUtils;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.plugin.logging.Log;
@@ -76,7 +78,7 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
+ " Build: " + detectedJdkVersion.getBuildNumber() + " Qualifier: "
+ detectedJdkVersion.getQualifier());
- setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion());
+ setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion(), log);
enforceVersion(helper.getLog(), "JDK", getVersion(), detectedJdkVersion);
}
@@ -115,11 +117,20 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
return StringUtils.stripEnd(version, ".");
}
- private void setCustomMessageIfNoneConfigured(ArtifactVersion detectedJdkVersion, String allowedVersionRange) {
+ private void setCustomMessageIfNoneConfigured(
+ ArtifactVersion detectedJdkVersion, String allowedVersionRange, Log log) {
if (getMessage() == null) {
+ String version;
+ try {
+ VersionRange vr = VersionRange.createFromVersionSpec(allowedVersionRange);
+ version = AbstractVersionEnforcer.toString(vr);
+ } catch (InvalidVersionSpecificationException e) {
+ log.debug("Could not parse allowed version range " + allowedVersionRange, e);
+ version = allowedVersionRange;
+ }
String message = String.format(
"Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.",
- detectedJdkVersion, SystemUtils.JAVA_HOME, allowedVersionRange);
+ detectedJdkVersion, SystemUtils.JAVA_HOME, version);
super.setMessage(message);
}
}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
index 53cfbfe..4afecbb 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
@@ -111,7 +111,7 @@ class TestRequireJavaVersion {
.isInstanceOf(EnforcerRuleException.class)
.hasMessage(
"Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.",
- thisVersion, SystemUtils.JAVA_HOME, requiredVersion);
+ thisVersion, SystemUtils.JAVA_HOME, "[" + requiredVersion + ",)");
}
@Test