[kotlin] KTIJ-36184 Add required kotlin-maven-allopen dependency

GitOrigin-RevId: 09dc0abf8c4637d5a2effd9dbaf9ebbe9f4ff0e3
This commit is contained in:
Vladimir Dolzhenko
2025-11-07 03:24:58 +00:00
committed by intellij-monorepo-bot
parent 254e3e83ac
commit ee77c473f5
2 changed files with 38 additions and 4 deletions
@@ -155,6 +155,27 @@ class PomFile private constructor(private val xmlFile: XmlFile, val domModel: Ma
return plugin
}
fun addPluginDependency(plugin: MavenDomPlugin, artifact: MavenId): MavenDomDependency? {
ensureBuild()
val dependencies = plugin.dependencies
dependencies.dependencies.firstOrNull {
it.groupId.stringValue == artifact.groupId &&
it.artifactId.stringValue == artifact.artifactId
}?.let { return it }
with(dependencies.addDependency()) {
groupId.stringValue = artifact.groupId
artifactId.stringValue = artifact.artifactId
artifact.version?.let {
version.stringValue = it
}
ensureTagExists()
return this
}
}
fun findPlugin(groupArtifact: MavenId): MavenDomPlugin? = domModel.build.plugins.plugins.firstOrNull { it.matches(groupArtifact) }
fun isPluginAfter(plugin: MavenDomPlugin, referencePlugin: MavenDomPlugin): Boolean {
@@ -650,14 +671,15 @@ fun PomFile.changeLanguageVersion(languageVersion: String?, apiVersion: String?)
}
@ApiStatus.Internal
fun PomFile.addKotlinCompilerPlugins(name: String) {
val kotlinPlugin = findPlugin(kotlinPluginId(null)) ?: return
fun PomFile.addKotlinCompilerPlugin(name: String): MavenDomPlugin? {
val kotlinPlugin = findPlugin(kotlinPluginId(null)) ?: return null
val configurationTag = kotlinPlugin.configuration.ensureTagExists()
val compilerPluginsTag = configurationTag.findSubTagOrCreate("compilerPlugins")
compilerPluginsTag.findSubTags("plugin").firstOrNull { it.value.trimmedText == name } ?: run {
val pluginTag = compilerPluginsTag.createChildTag("plugin", name)
compilerPluginsTag.add(pluginTag)
}
return kotlinPlugin
}
internal fun MavenDomDependencies.findDependencies(artifact: MavenId, scope: MavenArtifactScope? = null) =
@@ -7,11 +7,14 @@ import com.intellij.platform.backend.observation.launchTracked
import com.intellij.psi.PsiFile
import com.intellij.psi.xml.XmlFile
import kotlinx.coroutines.CoroutineScope
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.project.MavenProjectsManager
import org.jetbrains.kotlin.idea.configuration.KotlinCompilerPluginProjectConfigurator
import org.jetbrains.kotlin.idea.maven.KotlinMavenBundle
import org.jetbrains.kotlin.idea.maven.PomFile
import org.jetbrains.kotlin.idea.maven.addKotlinCompilerPlugins
import org.jetbrains.kotlin.idea.maven.addKotlinCompilerPlugin
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator.Companion.GROUP_ID
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator.Companion.KOTLIN_VERSION_PROPERTY
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator.Companion.findModulePomFile
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator.Companion.kotlinPluginId
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
@@ -40,13 +43,19 @@ abstract class AbstractMavenKotlinCompilerPluginProjectConfigurator(private val
coroutineScope.launchTracked {
edtWriteAction {
project.executeWriteCommand(KotlinMavenBundle.message("command.name.configure.0", xmlFile.name), null) {
pom.addKotlinCompilerPlugins(kotlinPluginName)
pom.addKotlinCompilerPlugin(kotlinPluginName)?.let { kotlinPlugin ->
pluginDependencyMavenId?.let {
pom.addPluginDependency(kotlinPlugin, it)
}
}
}
}
}
return xmlFile
}
protected abstract val pluginDependencyMavenId: MavenId?
protected abstract val kotlinPluginName: String
}
@@ -54,6 +63,9 @@ class SpringMavenKotlinCompilerPluginProjectConfigurator(coroutineScope: Corouti
override val kotlinPluginName: String
get() = "spring"
override val pluginDependencyMavenId: MavenId
get() = MavenId(GROUP_ID, "kotlin-maven-allopen", $$"${$$KOTLIN_VERSION_PROPERTY}")
override val compilerId: String = "kotlin-spring"
}