Add test dependencies when creating multiplatform projects

This commit is contained in:
Dmitry Jemerov
2017-09-07 16:52:53 +02:00
parent aed01c8475
commit 6d30123c21
3 changed files with 25 additions and 10 deletions
@@ -83,11 +83,23 @@ abstract class GradleKotlinFrameworkSupportProvider(val frameworkTypeId: String,
.addRepositoriesDefinition("mavenCentral()") .addRepositoriesDefinition("mavenCentral()")
.addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'") .addBuildscriptPropertyDefinition("ext.kotlin_version = '$kotlinVersion'")
.addDependencyNotation(getRuntimeLibrary(sdk))
.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH) for (dependency in getDependencies(sdk)) {
buildScriptData.addDependencyNotation(KotlinWithGradleConfigurator.getGroovyDependencySnippet(dependency))
}
for (dependency in getTestDependencies()) {
buildScriptData.addDependencyNotation(
if (":" in dependency)
"testCompile \"$dependency\""
else
KotlinWithGradleConfigurator.getGroovyDependencySnippet(dependency, "testCompile")
)
}
buildScriptData.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH)
} }
protected abstract fun getRuntimeLibrary(sdk: Sdk?): String protected abstract fun getDependencies(sdk: Sdk?): List<String>
protected open fun getTestDependencies(): List<String> = listOf()
protected abstract fun getPluginId(): String protected abstract fun getPluginId(): String
@@ -100,8 +112,7 @@ open class GradleKotlinJavaFrameworkSupportProvider(frameworkTypeId: String = "K
override fun getPluginId() = KotlinGradleModuleConfigurator.KOTLIN override fun getPluginId() = KotlinGradleModuleConfigurator.KOTLIN
override fun getRuntimeLibrary(sdk: Sdk?) = override fun getDependencies(sdk: Sdk?) = listOf(getStdlibArtifactId(sdk, bundledRuntimeVersion()))
KotlinWithGradleConfigurator.getGroovyDependencySnippet(getStdlibArtifactId(sdk, bundledRuntimeVersion()))
override fun addSupport(module: Module, rootModel: ModifiableRootModel, modifiableModelsProvider: ModifiableModelsProvider, buildScriptData: BuildScriptDataBuilder) { override fun addSupport(module: Module, rootModel: ModifiableRootModel, modifiableModelsProvider: ModifiableModelsProvider, buildScriptData: BuildScriptDataBuilder) {
super.addSupport(module, rootModel, modifiableModelsProvider, buildScriptData) super.addSupport(module, rootModel, modifiableModelsProvider, buildScriptData)
@@ -121,8 +132,7 @@ open class GradleKotlinJSFrameworkSupportProvider(frameworkTypeId: String = "KOT
override fun getPluginId() = KotlinJsGradleModuleConfigurator.KOTLIN_JS override fun getPluginId() = KotlinJsGradleModuleConfigurator.KOTLIN_JS
override fun getRuntimeLibrary(sdk: Sdk?) = override fun getDependencies(sdk: Sdk?) = listOf(MAVEN_JS_STDLIB_ID)
KotlinWithGradleConfigurator.getGroovyDependencySnippet(MAVEN_JS_STDLIB_ID)
override fun getDescription() = "A Kotlin library or application targeting JavaScript" override fun getDescription() = "A Kotlin library or application targeting JavaScript"
} }
@@ -131,8 +141,8 @@ open class GradleKotlinMPPCommonFrameworkSupportProvider :
GradleKotlinFrameworkSupportProvider("KOTLIN_MPP_COMMON", "Kotlin (Multiplatform - Common)", KotlinIcons.SMALL_LOGO) { GradleKotlinFrameworkSupportProvider("KOTLIN_MPP_COMMON", "Kotlin (Multiplatform - Common)", KotlinIcons.SMALL_LOGO) {
override fun getPluginId() = "kotlin-platform-common" override fun getPluginId() = "kotlin-platform-common"
override fun getRuntimeLibrary(sdk: Sdk?) = override fun getDependencies(sdk: Sdk?) = listOf(MAVEN_COMMON_STDLIB_ID)
KotlinWithGradleConfigurator.getGroovyDependencySnippet(MAVEN_COMMON_STDLIB_ID) override fun getTestDependencies() = listOf(MAVEN_COMMON_TEST_ID)
override fun getDescription() = "Shared code for a Kotlin multiplatform project (targeting JVM and JS)" override fun getDescription() = "Shared code for a Kotlin multiplatform project (targeting JVM and JS)"
} }
@@ -142,6 +152,7 @@ class GradleKotlinMPPJavaFrameworkSupportProvider
override fun getPluginId() = "kotlin-platform-jvm" override fun getPluginId() = "kotlin-platform-jvm"
override fun getDescription() = "JVM-specific code for a Kotlin multiplatform project" override fun getDescription() = "JVM-specific code for a Kotlin multiplatform project"
override fun getTestDependencies() = listOf(MAVEN_TEST_ID, MAVEN_TEST_JUNIT_ID, "junit:junit:4.12")
} }
class GradleKotlinMPPJSFrameworkSupportProvider class GradleKotlinMPPJSFrameworkSupportProvider
@@ -248,7 +248,8 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
private val KOTLIN_BUILD_SCRIPT_NAME = "build.gradle.kts" private val KOTLIN_BUILD_SCRIPT_NAME = "build.gradle.kts"
fun getGroovyDependencySnippet(artifactName: String) = "compile \"org.jetbrains.kotlin:$artifactName:\$kotlin_version\"" fun getGroovyDependencySnippet(artifactName: String, scope: String = "compile") =
"$scope \"org.jetbrains.kotlin:$artifactName:\$kotlin_version\""
fun getGroovyApplyPluginDirective(pluginName: String) = "apply plugin: '$pluginName'" fun getGroovyApplyPluginDirective(pluginName: String) = "apply plugin: '$pluginName'"
@@ -364,4 +364,7 @@ val MAVEN_STDLIB_ID_JRE8 = "kotlin-stdlib-jre8"
val MAVEN_JS_STDLIB_ID = "kotlin-stdlib-js" val MAVEN_JS_STDLIB_ID = "kotlin-stdlib-js"
val MAVEN_OLD_JS_STDLIB_ID = "kotlin-js-library" val MAVEN_OLD_JS_STDLIB_ID = "kotlin-js-library"
val MAVEN_COMMON_STDLIB_ID = "kotlin-stdlib-common" // TODO: KotlinCommonMavenConfigurator val MAVEN_COMMON_STDLIB_ID = "kotlin-stdlib-common" // TODO: KotlinCommonMavenConfigurator
val MAVEN_TEST_ID = "kotlin-test"
val MAVEN_TEST_JUNIT_ID = "kotlin-test-junit"
val MAVEN_COMMON_TEST_ID = "kotlin-test-common"
val LOG = Logger.getInstance("org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt") val LOG = Logger.getInstance("org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt")