From f137a3e0efa63301c4da4502deddca537db25790 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Tue, 21 Jul 2026 14:35:00 +0200 Subject: [PATCH] KTIJ-39639 IJ-CR-214162 [kotlin] Fix configuring lombok.config from subfolders with maven (cherry picked from commit 189d1ee998428c0cb7c2055b0686b2c3f7dc10c4) (cherry picked from commit 3b70d0aec58e601554ea7990b263bb5acd965529) IJ-MR-214996 GitOrigin-RevId: 90ca1eb95ef6ad5cc53bbe2d42bc5f0b0d3b17d0 --- ...otlinCompilerPluginProjectConfigurators.kt | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/plugins/kotlin/maven/src/org/jetbrains/kotlin/idea/maven/configuration/mavenKotlinCompilerPluginProjectConfigurators.kt b/plugins/kotlin/maven/src/org/jetbrains/kotlin/idea/maven/configuration/mavenKotlinCompilerPluginProjectConfigurators.kt index efa71263fbcf..51d4e6dc60a5 100644 --- a/plugins/kotlin/maven/src/org/jetbrains/kotlin/idea/maven/configuration/mavenKotlinCompilerPluginProjectConfigurators.kt +++ b/plugins/kotlin/maven/src/org/jetbrains/kotlin/idea/maven/configuration/mavenKotlinCompilerPluginProjectConfigurators.kt @@ -4,12 +4,17 @@ package org.jetbrains.kotlin.idea.maven.configuration import com.intellij.modcommand.ActionContext import com.intellij.modcommand.ModCommand import com.intellij.openapi.module.Module +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.psi.search.FilenameIndex +import com.intellij.psi.search.GlobalSearchScopes import com.intellij.psi.xml.XmlFile +import com.intellij.util.CommonProcessors import org.jetbrains.idea.maven.dom.model.MavenDomPlugin import org.jetbrains.idea.maven.dom.model.MavenDomPluginExecution import org.jetbrains.idea.maven.model.MavenId import org.jetbrains.idea.maven.project.MavenProjectsManager import org.jetbrains.kotlin.allopen.AllOpenPluginNames +import org.jetbrains.kotlin.idea.base.util.projectScope import org.jetbrains.kotlin.idea.compiler.configuration.IdeKotlinVersion import org.jetbrains.kotlin.idea.configuration.ConfigurationResultBuilder import org.jetbrains.kotlin.idea.configuration.KotlinCompilerPluginProjectConfigurator @@ -25,7 +30,6 @@ import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator.Com import org.jetbrains.kotlin.idea.maven.createChildTag import org.jetbrains.kotlin.idea.maven.findSubTagOrCreate import org.jetbrains.kotlin.idea.util.application.executeWriteCommand -import java.nio.file.Files import kotlin.io.path.relativeTo abstract class AbstractMavenKotlinCompilerPluginProjectConfigurator: KotlinCompilerPluginProjectConfigurator { @@ -182,15 +186,20 @@ private fun Module.findLombokConfigPath(): String? { val mavenProjectsManager = MavenProjectsManager.getInstance(project) val mavenProject = mavenProjectsManager.findProject(this) ?: return null val projectPath = mavenProject.directoryPath - val configName = "lombok.config" - val moduleConfig = projectPath.resolve(configName) - val lombokConfig = moduleConfig.takeIf(Files::exists) ?: mavenProject.parentId - ?.let(mavenProjectsManager::findProject) - ?.directoryPath - ?.resolve(configName) - ?.takeIf(Files::exists) - val relativeTo = lombokConfig?.relativeTo(projectPath) - return relativeTo?.toString() + val processor = CommonProcessors.FindFirstProcessor() + for (scope in arrayOf(GlobalSearchScopes.directoryScope(project, mavenProject.file.parent, true), project.projectScope())) { + FilenameIndex.processFilesByNames( + setOf("lombok.config"), + false, + scope, + null, + processor + ) + processor.foundValue?.let { + return it.toNioPath().relativeTo(projectPath).toString() + } + } + return null } internal fun PomFile.addAllOpenKotlinCompilerPluginPreset(kotlinPlugin: MavenDomPlugin, kotlinCompilerPluginId: String) {