首页 > 解决方案 > Intellij 自动完成在多平台库依赖项上失败

问题描述

我创建了一个多平台库,我在不同的多平台项目中使用它。包含依赖项后,我可以毫无问题地使用 commonMain 中的库,并且所有目标都可以毫无错误地构建。但是,intellij 自动完成不知道我的新类型。我已经多次使缓存无效并重新启动应用程序,但它就是找不到这种类型。有人遇到过这个吗?

Intellij 报告错误

但 gradle 显示成功

以防万一,这是我的 build.gradle.kts:

import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack

buildscript {
    repositories {
        jcenter()
    }
}

plugins {
    kotlin("multiplatform") version "1.3.61"
}

repositories {
    jcenter()
    maven(  "https://dl.bintray.com/kotlin/ktor" )
    mavenCentral()
    mavenLocal()
}

val ktor_version = "1.1.3"
val logback_version = "1.2.3"

kotlin {
    js {
        browser {  }
    }
    jvm {
        compilations.named("main") {
            tasks.getByName<Copy>(processResourcesTaskName) {
                dependsOn("jsBrowserWebpack")
                tasks.named<KotlinWebpack>("jsBrowserWebpack") {
                    from(entry.name, destinationDirectory)
                }
            }
        }
    }

    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation(kotlin("stdlib-common"))
                api("github.fatalcatharsis:constraint:1.0-SNAPSHOT")
            }
        }

        val commonTest by getting {
            dependencies {
                implementation(kotlin("test-common"))
                implementation(kotlin("test-annotations-common"))
            }
        }

        val jvmMain by getting {
            dependencies {
                implementation( kotlin("stdlib-jdk8"))
                implementation( "io.ktor:ktor-server-netty:$ktor_version")
                implementation( "io.ktor:ktor-html-builder:$ktor_version")
                implementation( "ch.qos.logback:logback-classic:$logback_version")
            }
        }

        val jvmTest by getting {
            dependencies {
                implementation(kotlin("test"))
                implementation(kotlin("test-testng"))
            }
        }

        val jsMain by getting {
            dependencies {
                implementation( kotlin("stdlib-js"))
            }
        }

        val jsTest by getting {
            dependencies {
                implementation( kotlin("test-js"))
            }
        }
    }
}

tasks.register<JavaExec>("run") {
    dependsOn("jvmJar")
    group = "application"
    main = "sample.SampleJvmKt"
    val t = tasks.named<Jar>("jvmJar")

    classpath(configurations.named("jvmRuntimeClasspath"), t.get() )
}

标签: kotlinintellij-ideakotlin-multiplatform

解决方案


推荐阅读