@@ -38,10 +38,7 @@ import org.jetbrains.kotlin.config.JvmTarget
38
38
import org.jetbrains.kotlin.config.LanguageVersion
39
39
import org.jetbrains.kotlin.config.TargetPlatformKind
40
40
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
41
- import org.jetbrains.kotlin.idea.facet.KotlinFacet
42
- import org.jetbrains.kotlin.idea.facet.configureFacet
43
- import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
44
- import org.jetbrains.kotlin.idea.facet.mavenLibraryId
41
+ import org.jetbrains.kotlin.idea.facet.*
45
42
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
46
43
import java.io.File
47
44
import java.util.*
@@ -105,6 +102,15 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
105
102
configureFacet(mavenProject, modifiableModelsProvider, module)
106
103
}
107
104
105
+ private fun getCompilerArgumentsByConfigurationElement (configuration : Element ) =
106
+ configuration.getChild(" args" )?.getChildren(" arg" )?.map { it.text } ? : emptyList()
107
+
108
+ private val compilationGoals = listOf (PomFile .KotlinGoals .Compile ,
109
+ PomFile .KotlinGoals .TestCompile ,
110
+ PomFile .KotlinGoals .Js ,
111
+ PomFile .KotlinGoals .TestJs ,
112
+ PomFile .KotlinGoals .MetaData )
113
+
108
114
private fun configureFacet (mavenProject : MavenProject , modifiableModelsProvider : IdeModifiableModelsProvider , module : Module ) {
109
115
val mavenPlugin = mavenProject.findPlugin(KotlinMavenConfigurator .GROUP_ID , KotlinMavenConfigurator .MAVEN_PLUGIN_ID )
110
116
val compilerVersion = mavenPlugin?.version ? : return
@@ -113,7 +119,16 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
113
119
114
120
kotlinFacet.configureFacet(compilerVersion, CoroutineSupport .DEFAULT , platform, modifiableModelsProvider)
115
121
val apiVersion = mavenPlugin.configurationElement?.getChild(" apiVersion" )?.text?.let { LanguageVersion .fromFullVersionString(it) }
116
- kotlinFacet.configuration.settings.versionInfo.apiLevel = apiVersion
122
+ val sharedArguments = mavenPlugin.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) } ? : emptyList()
123
+ val executionArguments = mavenPlugin.executions?.filter { it.goals.any { it in compilationGoals } }
124
+ ?.firstOrNull()
125
+ ?.configurationElement?.let { getCompilerArgumentsByConfigurationElement(it) }
126
+ ? : emptyList()
127
+ with (kotlinFacet.configuration.settings) {
128
+ versionInfo.apiLevel = apiVersion
129
+ }
130
+ parseCompilerArgumentsToFacet(sharedArguments, kotlinFacet)
131
+ parseCompilerArgumentsToFacet(executionArguments, kotlinFacet)
117
132
MavenProjectImportHandler .getInstances(module.project).forEach { it(kotlinFacet, mavenProject) }
118
133
}
119
134
0 commit comments