diff --git a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt index 201691208ae4..8fc8c2add7c8 100644 --- a/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt +++ b/java/java-impl/src/com/intellij/openapi/projectRoots/impl/ToolVersionsConfigurationProvider.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.openapi.projectRoots.impl import com.intellij.openapi.diagnostic.logger @@ -12,10 +12,10 @@ private val LOG = logger() data class AsdfReleaseData(val name: String, val vendor: String, val version: String) { companion object { - private val regex: Regex = Regex("([\\w\\-]+)-([0-9][^-_+]*)") + private val regex: Regex = Regex("([\\w\\-]+)-([0-9][^-_+b\\s]*)\\S*") fun parse(text: String): AsdfReleaseData? { - val matchResult = regex.find(text) ?: return null + val matchResult = regex.matchEntire(text) ?: return null return AsdfReleaseData( text, matchResult.groups[1]?.value ?: return null, @@ -24,9 +24,11 @@ data class AsdfReleaseData(val name: String, val vendor: String, val version: St } } + val normalizedVersion: String = version.split(".").take(3).joinToString(".") + fun matchVersionString(versionString: @NlsSafe String): Boolean { LOG.info("Matching '$versionString'") - if (version !in versionString) return false + if (normalizedVersion !in versionString) return false val variant = when (vendor) { "adoptopenjdk", "adoptopenjdk-jre" -> JdkVersionDetector.Variant.AdoptOpenJdk_HS @@ -61,7 +63,7 @@ class ToolVersionsConfigurationProvider : ExternalJavaConfigurationProvider