[ 
https://issues.apache.org/jira/browse/MNG-7611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17642157#comment-17642157
 ] 

ASF GitHub Bot commented on MNG-7611:
-------------------------------------

michael-o commented on code in PR #888:
URL: https://github.com/apache/maven/pull/888#discussion_r1037533787


##########
maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginJavaPrerequisiteChecker.java:
##########
@@ -18,26 +18,57 @@
  */
 package org.apache.maven.plugin.internal;
 
+import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
-import org.apache.maven.model.profile.activation.JdkVersionProfileActivator;
 import org.apache.maven.plugin.MavenPluginPrerequisitesChecker;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.codehaus.plexus.util.StringUtils;
+import org.eclipse.aether.version.InvalidVersionSpecificationException;
+import org.eclipse.aether.version.Version;
+import org.eclipse.aether.version.VersionConstraint;
+import org.eclipse.aether.version.VersionScheme;
 
 @Named
 @Singleton
 public class MavenPluginJavaPrerequisiteChecker implements 
MavenPluginPrerequisitesChecker {
 
+    private final VersionScheme versionScheme;
+
+    @Inject
+    public MavenPluginJavaPrerequisiteChecker(final VersionScheme 
versionScheme) {
+        this.versionScheme = versionScheme;
+    }
+
     @Override
     public void accept(PluginDescriptor pluginDescriptor) {
         String requiredJavaVersion = pluginDescriptor.getRequiredJavaVersion();
         if (StringUtils.isNotBlank(requiredJavaVersion)) {
             String currentJavaVersion = System.getProperty("java.version");
-            if 
(!JdkVersionProfileActivator.isJavaVersionCompatible(requiredJavaVersion, 
currentJavaVersion)) {
+            if (!matchesVersion(requiredJavaVersion, currentJavaVersion)) {
                 throw new IllegalStateException("Required Java version " + 
requiredJavaVersion
                         + " is not met by current version: " + 
currentJavaVersion);
             }
         }
     }
+
+    boolean matchesVersion(String requiredVersion, String currentVersion) {
+        VersionConstraint constraint;
+        try {
+            constraint = versionScheme.parseVersionConstraint(requiredVersion);
+        } catch (InvalidVersionSpecificationException e) {
+            throw new IllegalArgumentException(
+                    "Invalid requiredJavaVersion given in plugin descriptor: " 
+ e.getMessage(), e);
+        }
+        Version current;
+        try {
+            current = versionScheme.parseVersion(currentVersion);
+        } catch (InvalidVersionSpecificationException e) {
+            throw new IllegalStateException("Could not parse current Java 
version: " + e.getMessage(), e);

Review Comment:
   When you look at our codebase and stack traces you will see duplicate 
messages all over. It is a pain to filter out the relevant information.





> java.lang.IllegalStateException: Required Java version 1.8 is not met by 
> current version: 17.0.5
> ------------------------------------------------------------------------------------------------
>
>                 Key: MNG-7611
>                 URL: https://issues.apache.org/jira/browse/MNG-7611
>             Project: Maven
>          Issue Type: Task
>            Reporter: Guillaume Nodet
>            Assignee: Konrad Windszus
>            Priority: Major
>             Fix For: 4.0.0-alpha-3
>
>
> {code:java}
> Caused by: java.lang.IllegalStateException: Required Java version 1.8 is not 
> met by current version: 17.0.5
>    at 
> org.apache.maven.plugin.internal.MavenPluginJavaPrerequisiteChecker.accept(MavenPluginJavaPrerequisiteChecker.java:38)
>    at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.lambda$checkPrerequisites$1(DefaultMavenPluginManager.java:289)
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to