Configuring project with Gradle adds kotlin-stdlib-jre7 or kotlin-stdlib-jre8 if the selected JDK is of a high enough version
This commit is contained in:
+1
-1
@@ -73,7 +73,7 @@ class GradleKotlinJavaFrameworkSupportProvider : GradleFrameworkSupportProvider(
|
||||
.addRepositoriesDefinition("mavenCentral()")
|
||||
|
||||
.addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'")
|
||||
.addDependencyNotation(KotlinWithGradleConfigurator.LIBRARY)
|
||||
.addDependencyNotation(KotlinWithGradleConfigurator.getRuntimeLibrary(rootModel.sdk))
|
||||
.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,9 @@ package org.jetbrains.kotlin.idea.configuration
|
||||
import com.intellij.codeInsight.CodeInsightUtilCore
|
||||
import com.intellij.ide.actions.OpenFileAction
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.ModuleUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.DependencyScope
|
||||
import com.intellij.openapi.roots.ExternalLibraryDescriptor
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
@@ -33,6 +35,7 @@ import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
||||
import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion
|
||||
import org.jetbrains.kotlin.idea.util.application.executeCommand
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.idea.versions.getStdlibArtifactId
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
|
||||
@@ -72,7 +75,9 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
|
||||
private fun isFileConfigured(projectGradleFile: GroovyFile): Boolean {
|
||||
val fileText = projectGradleFile.text
|
||||
return containsDirective(fileText, applyPluginDirective) && fileText.contains(LIBRARY)
|
||||
return containsDirective(fileText, applyPluginDirective) &&
|
||||
fileText.contains("org.jetbrains.kotlin") &&
|
||||
fileText.contains("kotlin-stdlib")
|
||||
}
|
||||
|
||||
@JvmSuppressWildcards
|
||||
@@ -140,7 +145,8 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
wasModified = wasModified or addRepository(repositoriesBlock, version)
|
||||
|
||||
val dependenciesBlock = getDependenciesBlock(file)
|
||||
wasModified = wasModified or addExpressionInBlockIfNeeded(LIBRARY, dependenciesBlock, false)
|
||||
val sdk = ModuleUtil.findModuleForPsiElement(file)?.let { ModuleRootManager.getInstance(it).sdk }
|
||||
wasModified = wasModified or addExpressionInBlockIfNeeded(getRuntimeLibrary(sdk), dependenciesBlock, false)
|
||||
|
||||
return wasModified
|
||||
}
|
||||
@@ -187,8 +193,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
|
||||
private val MAVEN_CENTRAL = "mavenCentral()\n"
|
||||
private val JCENTER = "jcenter()\n"
|
||||
val LIBRARY = "compile \"org.jetbrains.kotlin:kotlin-stdlib:\$kotlin_version\""
|
||||
val SOURCE_SET = "main.java.srcDirs += 'src/main/kotlin'\n"
|
||||
|
||||
private val VERSION = String.format("ext.kotlin_version = '%s'", VERSION_TEMPLATE)
|
||||
|
||||
private fun containsDirective(fileText: String, directive: String): Boolean {
|
||||
@@ -318,8 +323,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
return getBlockOrCreate(file, "dependencies")
|
||||
}
|
||||
|
||||
fun getSourceSetsBlock(parent: GrStatementOwner) = getBlockOrCreate(parent, "sourceSets")
|
||||
|
||||
private fun getBuildScriptBlock(file: GrStatementOwner) = getBlockOrCreate(file, "buildscript")
|
||||
|
||||
private fun getBuildScriptDependenciesBlock(file: GrStatementOwner): GrClosableBlock {
|
||||
@@ -402,5 +405,10 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
||||
}
|
||||
return addLastExpressionInBlockIfNeeded(snippet, repositoriesBlock)
|
||||
}
|
||||
|
||||
fun getRuntimeLibrary(sdk: Sdk?): String {
|
||||
val artifactId = getStdlibArtifactId(sdk)
|
||||
return "compile \"org.jetbrains.kotlin:$artifactId:\$kotlin_version\""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,9 @@ import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.ModuleManager
|
||||
import com.intellij.openapi.module.ModuleUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.JavaSdk
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersion
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.LibraryOrderEntry
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
@@ -287,6 +290,18 @@ fun getKotlinJsRuntimeMarkerClass(project: Project, scope: GlobalSearchScope): V
|
||||
}
|
||||
}
|
||||
|
||||
fun getStdlibArtifactId(sdk: Sdk?): String {
|
||||
val sdkVersion = sdk?.let { JavaSdk.getInstance().getVersion(it) }
|
||||
val artifactId = when (sdkVersion) {
|
||||
JavaSdkVersion.JDK_1_8, JavaSdkVersion.JDK_1_9 -> MAVEN_STDLIB_ID_JRE8
|
||||
JavaSdkVersion.JDK_1_7 -> MAVEN_STDLIB_ID_JRE7
|
||||
else -> MAVEN_STDLIB_ID
|
||||
}
|
||||
return artifactId
|
||||
}
|
||||
|
||||
val MAVEN_STDLIB_ID = "kotlin-stdlib"
|
||||
val MAVEN_STDLIB_ID_JRE7 = "kotlin-stdlib-jre7"
|
||||
val MAVEN_STDLIB_ID_JRE8 = "kotlin-stdlib-jre8"
|
||||
val MAVEN_JS_STDLIB_ID = "kotlin-js-library"
|
||||
val MAVEN_COMMON_STDLIB_ID = "kotlin-stdlib-common" // TODO: KotlinCommonMavenConfigurator
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
buildscript {
|
||||
ext.kotlin_version = '$VERSION$'
|
||||
|
||||
@@ -13,7 +13,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
buildscript {
|
||||
ext.kotlin_version = '$VERSION$'
|
||||
|
||||
@@ -13,7 +13,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
buildscript {
|
||||
ext.kotlin_version = '$VERSION$'
|
||||
|
||||
@@ -6,7 +6,7 @@ version = '1.0'
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
|
||||
buildscript {
|
||||
|
||||
@@ -6,7 +6,7 @@ version = '1.0'
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
|
||||
buildscript {
|
||||
|
||||
@@ -13,7 +13,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.11'
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
|
||||
}
|
||||
buildscript {
|
||||
ext.kotlin_version = '$VERSION$'
|
||||
|
||||
Reference in New Issue
Block a user