无法在 commonMain 中为 kotlin 多平台使用依赖项
Cannot use dependencies in commonMain for kotlin multiplatform
我不知道如何让 commonMain 依赖项在 kotlin 多平台项目中工作。我已经多次阅读并重新阅读文档并查看了许多示例,但它就是行不通。这是我认为应该可行的最小示例。我做错了什么?
多平台库
plugins {
kotlin("multiplatform") version "1.3.61"
`maven-publish`
}
group = "github.fatalcatharsis"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
mavenLocal()
}
kotlin {
/* Targets configuration omitted.
* To find out how to configure the targets, please follow the link:
* https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */
sourceSets {
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
}
}
src/commonMain/kotlin/Test.kt
data class Test (
val test : Int
)
多平台测试
plugins {
kotlin("multiplatform") version "1.3.61"
}
group = "github.fatalcatharsis"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
mavenLocal()
}
kotlin {
/* Targets configuration omitted.
* To find out how to configure the targets, please follow the link:
* https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */
js {
browser()
}
jvm()
sourceSets {
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
implementation("github.fatalcatharsis:multiplatform-lib-metadata:1.0-SNAPSHOT")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
}
}
src/commonMain/kotlin/Tester.kt
import github.fatalcatharsis.Test
fun test() {
val meh = Test()
}
intellij 说它在项目菜单上很好地解决了依赖关系,但突出显示 github 为红色。 "Test" 没有可用的自动完成功能。 multiplatform-test\src\commonMain\kotlin\Tester.kt: (1, 8): Unresolved reference: github
错误。只是看起来依赖内容在 commonMain 中不可用。我觉得我错过了一些微妙而明显的东西。有什么想法吗?
编辑:如果我将依赖项更改为:
,则执行与文档对常见依赖项所说的相反的操作
implementation("github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT")
它产生错误:
Could not determine the dependencies of task ':jsPackageJson'.
> Could not resolve all dependencies for configuration ':jsNpm'.
> Could not resolve github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT.
Required by:
project :
> Unable to find a matching variant of github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT:
- Variant 'metadata-api':
- Found org.gradle.status 'integration' but wasn't required.
- Required org.gradle.usage 'kotlin-runtime' and found incompatible value 'kotlin-api'.
- Required org.jetbrains.kotlin.platform.type 'js' and found incompatible value 'common'.
假设你已经在本地发布,并且成功了,那么首先要改变的是依赖关系:
implementation("github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT")
您可能不想要 metadata
神器。
接下来,将以下内容添加到测试应用的 settings.gradle
文件中。
enableFeaturePreview("GRADLE_METADATA")
之后,尝试在命令行上构建。有时 intellij 确实看到了一切。
如果仍然无法正常工作,我会开始查看您的发布配置。
我不知道如何让 commonMain 依赖项在 kotlin 多平台项目中工作。我已经多次阅读并重新阅读文档并查看了许多示例,但它就是行不通。这是我认为应该可行的最小示例。我做错了什么?
多平台库
plugins {
kotlin("multiplatform") version "1.3.61"
`maven-publish`
}
group = "github.fatalcatharsis"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
mavenLocal()
}
kotlin {
/* Targets configuration omitted.
* To find out how to configure the targets, please follow the link:
* https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */
sourceSets {
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
}
}
src/commonMain/kotlin/Test.kt
data class Test (
val test : Int
)
多平台测试
plugins {
kotlin("multiplatform") version "1.3.61"
}
group = "github.fatalcatharsis"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
mavenLocal()
}
kotlin {
/* Targets configuration omitted.
* To find out how to configure the targets, please follow the link:
* https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#setting-up-targets */
js {
browser()
}
jvm()
sourceSets {
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
implementation("github.fatalcatharsis:multiplatform-lib-metadata:1.0-SNAPSHOT")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
}
}
src/commonMain/kotlin/Tester.kt
import github.fatalcatharsis.Test
fun test() {
val meh = Test()
}
intellij 说它在项目菜单上很好地解决了依赖关系,但突出显示 github 为红色。 "Test" 没有可用的自动完成功能。 multiplatform-test\src\commonMain\kotlin\Tester.kt: (1, 8): Unresolved reference: github
错误。只是看起来依赖内容在 commonMain 中不可用。我觉得我错过了一些微妙而明显的东西。有什么想法吗?
编辑:如果我将依赖项更改为:
,则执行与文档对常见依赖项所说的相反的操作implementation("github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT")
它产生错误:
Could not determine the dependencies of task ':jsPackageJson'.
> Could not resolve all dependencies for configuration ':jsNpm'.
> Could not resolve github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT.
Required by:
project :
> Unable to find a matching variant of github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT:
- Variant 'metadata-api':
- Found org.gradle.status 'integration' but wasn't required.
- Required org.gradle.usage 'kotlin-runtime' and found incompatible value 'kotlin-api'.
- Required org.jetbrains.kotlin.platform.type 'js' and found incompatible value 'common'.
假设你已经在本地发布,并且成功了,那么首先要改变的是依赖关系:
implementation("github.fatalcatharsis:multiplatform-lib:1.0-SNAPSHOT")
您可能不想要 metadata
神器。
接下来,将以下内容添加到测试应用的 settings.gradle
文件中。
enableFeaturePreview("GRADLE_METADATA")
之后,尝试在命令行上构建。有时 intellij 确实看到了一切。
如果仍然无法正常工作,我会开始查看您的发布配置。