Как добавить зависимость в мультиплатформенные проекты kotlin с единой конфигурацией build.gradle - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть следующий модуль "калькулятор", чей файл build.gradle выглядит так, как показано ниже. Отлично работает

buildscript {
    ext {
        kotlin_version = "1.2.71"
        coroutines_version = "0.30.1"
    }

    repositories {
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

plugins {
    id 'org.jetbrains.kotlin.multiplatform' version "1.2.71"
}

group 'mpp2-calc'
version '1.1'


kotlin {
    targets {
        fromPreset(presets.jvm, 'jvm') {
            compilations.all {
                tasks[compileKotlinTaskName].kotlinOptions {
                    jvmTarget = '1.8'
                }
            }
        }
        fromPreset(presets.js, 'js') {
            compilations.all {
                tasks[compileKotlinTaskName].kotlinOptions {
                    metaInfo = true
                    outputFile = "${projectDir}/build/classes/main/${project.name}.js"
                    sourceMap = true
                    moduleKind = 'umd'
                    main = 'call'
                }
            }
        }
    }

    sourceSets {
        commonMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version"
            }
        }
        commonTest {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
                implementation "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
            }
        }
        jvmMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
            }
        }
        jvmTest {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
                implementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
            }
        }
        jsMain {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$coroutines_version"
            }
        }
        jsTest {
            dependencies {
                implementation "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"
            }
        }
    }
}

repositories {
    maven { url = 'https://dl.bintray.com/russhwolf/multiplatform-settings' }

    google()
    jcenter()
}

Это многоплатформенная библиотека, предназначенная для jvm и платформы js.

У меня есть еще один модуль "someapp", который тоже выглядит как build.gradle

buildscript {
    ext.kotlin_version = '1.2.71'

    repositories {
        maven { url 'http://dl.bintray.com/kotlin/kotlin-eap' }
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: "application"

group 'mpp2'
version '1.1'

mainClassName = "com.asofttz.someapp.indexKt"

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    api project(":calculator") // doesn't seem to show any effect
}

Мои настройки. Gradle выглядит так

rootProject.name = 'mpp2'
include ':calculator'
include ':someapp'

Теперь я хочу добавить целевую платформу jvm модуля калькулятора, используя gralde, для проекта someapp без публикации в maven. Может кто-нибудь помочь мне, как? Кажется, я застрял в этой точке, и я хочу двигаться вперед с этим типом конфигурации

Дополнительный вопрос: Предположим, я добавил цель Android в свой модуль калькулятора, как мне добавить ее как зависимость от проекта Android?

1 Ответ

0 голосов
/ 17 ноября 2018

Вы не ошиблись в своей конфигурации, просто увеличьте версию kotlin до 1.3.0 и выше. также используйте версию Gradle 4.6 и выше.

Чтобы изменить версию Gradle, просто войдите в файл gradle/wrapper/gradle-wrapper.properties, измените значение distributionUrl на distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip.

все установить, синхронизировать и начать отладку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...