Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Gradle插件中的协同路由依赖关系_Kotlin_Gradle Kotlin Dsl - Fatal编程技术网

Kotlin Gradle插件中的协同路由依赖关系

Kotlin Gradle插件中的协同路由依赖关系,kotlin,gradle-kotlin-dsl,Kotlin,Gradle Kotlin Dsl,我正在用Kotlin构建一个Gradle插件,这是我使用Ktor和协同程序的一个特性。插件必须作为类路径包含在第三方项目中 当我试图在另一个项目中使用该插件时,问题出现了,我得到: 由:java.lang.NoClassDefFoundError:kotlin/coroutines/Continuation引起的消费者项目 我试图隔离协同路由依赖项,并将可传递依赖项应用于Ktor,但没有成功 我见过太多不同的解决方案(),比如应用ShadowJar来构建FatJar,但也许我在配置中遗漏了一些东

我正在用Kotlin构建一个Gradle插件,这是我使用Ktor和协同程序的一个特性。插件必须作为类路径包含在第三方项目中

当我试图在另一个项目中使用该插件时,问题出现了,我得到:

由:java.lang.NoClassDefFoundError:kotlin/coroutines/Continuation引起的消费者项目

我试图隔离协同路由依赖项,并将可传递依赖项应用于Ktor,但没有成功

我见过太多不同的解决方案(),比如应用ShadowJar来构建FatJar,但也许我在配置中遗漏了一些东西。一旦我应用了Shadow插件,jar大约是62Mb,即使应用
minimize
jar的大小也是12MB

插件的基本配置(基于Kotlin DSL的示例)是:

    plugins {
        `kotlin-dsl`
        `maven-publish`
        kotlin("jvm") version "1.3.10"
        id("com.github.johnrengelman.shadow") version "4.0.3"
    }

    gradlePlugin {
       plugins {
          register("greet-plugin") {
             id = "greet"
             implementationClass = "GreetPlugin"
          }
       }

      dependencies {
         api("io.ktor:ktor-client-okhttp:1.0.1")
      }
    }

    val sourcesJar by tasks.registering(Jar::class) {
       classifier = "sources"
       from(sourceSets.main.get().allSource)
    }

    val shadowJar: ShadowJar by tasks
        shadowJar.apply {
           baseName = "test"
           classifier = ""
           minimize()
    }
完整的示例如下:

更详细的错误

    java.lang.NoClassDefFoundError: kotlin/coroutines/Continuation
            at io.ktor.client.engine.okhttp.OkHttp.create(OkHttp.kt:8)
            at io.ktor.client.HttpClientKt.HttpClient(HttpClient.kt:36)
            at io.ktor.client.HttpClientKt.HttpClient$default(HttpClient.kt:33)
            at GreetPlugin.apply(GreetPlugin.kt:26)
            at GreetPlugin.apply(GreetPlugin.kt:12)
我希望该插件能够在Ktor中正确地构建协同路由依赖关系,并且不会将大jar作为依赖关系