Quantcast
Channel: User Mark - Stack Overflow
Viewing all articles
Browse latest Browse all 44

Use Gradle sub-projects with Kotlin multiplatform

$
0
0

I'm using Kotlin multi-platform (JVM & JS), which in IDEA creates three projects: demo, demo-js and demo-jvm.

I would like to split the common code into more subprojects/submodules. Let's say I add commonmod; how do I make it compile?

The error right now, for gradle run -p demo-jvm, is:

demo/demo-js/src/main/kotlin/demo/commonmod/example.kt: (3, 12): Actual function 'getPlatform' has no corresponding expected declaration

but I think I'm doing this fundamentally wrong, as I don't know what should depend on what (although I tried quite some iterations). If I solve this error I get other ones, and then other ones again, until I'm back to this one.


As a minimal-but-still-large example, I have:

demo/settings.gradle:

rootProject.name = 'demo'include 'demo-jvm', 'demo-js', 'commonmod'

demo/build.gradle:

buildscript { ... }apply plugin: 'kotlin-platform-common'repositories {    mavenCentral()}dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"    testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"    testCompile "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"    compile project(':commonmod')}

demo/demo-jvm/settings.gradle:

rootProject.name = 'demo'

demo/demo-jvm/build.gradle:

buildscript { ... }apply plugin: 'kotlin-platform-jvm'apply plugin: 'application'repositories {    mavenCentral()}mainClassName = "demo.MainKt"dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"    expectedBy project(":")    testCompile "junit:junit:4.12"    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"}

demo/demo-js/settings.gradle:

rootProject.name = 'demo'

demo/demo-js/build.gradle:

buildscript { ... }apply plugin: 'kotlin-platform-js'repositories {    mavenCentral()}dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"    expectedBy project(":")    testCompile "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"}

demo/commonmod/settings.gradle:

rootProject.name = 'demo'include 'demo-jvm', 'demo-js'

demo/commonmod/build.gradle:

buildscript { ... }apply plugin: 'kotlin-platform-common'repositories {    mavenCentral()}dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"    testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"    testCompile "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"    compile project(':demo-js')    compile project(':demo-jvm')}

Viewing all articles
Browse latest Browse all 44

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>