我有一個用于 jvm/js 的多平臺 kotlin 專案。我想提取一些通用代碼,這些代碼不是特定于編譯目標的,以便在兩個應用程式中重用。
以下是我的專案結構:
├── api
│ ├── build.gradle
│ └── src
├── server
│ ├── build.gradle
│ └── src
├── client
│ ├── build.gradle
│ └── src
├── build.gradle
├── gradle.properties
└── settings.gradle
api/build.gradle:
plugins {
id 'org.jetbrains.kotlin.multiplatform'
}
group 'io.codegoblin'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
kotlin {
jvm()
js {
useCommonJs()
browser()
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
}
}
}
}
客戶端/build.gradle
plugins {
id("org.jetbrains.kotlin.js")
}
repositories {
mavenCentral()
maven { url = "https://dl.bintray.com/kotlin/kotlin-eap" }
maven { url = "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-js-wrappers" }
maven { url = "https://kotlin.bintray.com/kotlin-js-wrappers/" }
}
kotlin {
js {
browser {
commonWebpackConfig {
cssSupport.enabled = true
}
}
binaries.executable()
}
}
dependencies {
implementation project(":api")
implementation("org.jetbrains:kotlin-react:17.0.2-pre.154-kotlin-$kotlin_version")
implementation("org.jetbrains:kotlin-react-dom:17.0.2-pre.154-kotlin-$kotlin_version")
implementation(npm("react", "$react_version"))
implementation(npm("react-dom", "$react_version"))
}
tasks.register("stage") {
dependsOn("build")
}
kotlin_version 是1.5.0
等級是7.1
使用此設定專案使用適當的編譯目標編譯 api 服務器和客戶端模塊,但是來自:api的代碼在:client模塊中不可見,也不存在于已編譯的:client js jar 中。我想我需要在 javascript 級別設定此依賴項?
如何使多專案模塊依賴項在 javascript 模塊中作業?
uj5u.com熱心網友回復:
您的client模塊也應該是多平臺的,它只能有一個平臺 ( js),例如:
- 添加
kotlin("multiplatform")插件 - 在里面宣告依賴
kotlin.sourceSets.jsMain
uj5u.com熱心網友回復:
在這里呼應 Philip Dukhov,因此您的客戶需要知道如何使用該 KMP 庫,為此您有幾個選擇:
- 可能最簡單的方法是讓
kotlin-multiplatformgradle 插件完成作業(如 Philip 建議的那樣),它負責獲取正確的目標并構建正確的輸出以供您的客戶端模塊使用。 - 或者,您可能不想在客戶端模塊中引入特定于 kmp 的邏輯,在這種情況下,您需要構建特定于 js 的輸出并將其提供給您的客戶端模塊(因為您的客戶端模塊已經存在于 Kotlin 世界中,我想這是不是你想要的)
希望這給你全貌
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360964.html
標籤:爪哇 科特林 等级 kotlin-多平台 kotlin-js
上一篇:jpackaged時Java程式使用了錯誤的語言環境
下一篇:Gradlelib插件目錄
