0

我有一个包含 Gradle JavaExec 任务的 Android 模块。运行 JavaExec 任务时,我希望它使用模块的类路径。JavaExec 任务执行一个 Kotlin 主函数,该函数使用一些 3rd 方库 (kotlinpoet)。java.lang.ClassNotFoundException但是在运行 Gradle 任务时,由于 kotlinpoet 库未包含在类路径中,我得到了一个。

我在 StackOverflow 中发现了类似的问题,并为 中的classpath参数尝试了许多变体myTask,但没有任何效果。

这是build.gradle文件:

plugins {
    id 'com.android.library'
    id 'kotlin-android'
}

apply plugin: 'kotlinx-serialization'

android {
    compileSdkVersion 30    
    defaultConfig {
    ...
    }
    buildTypes {
    ...
    }
    compileOptions {
    ...
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

task myTask(type: JavaExec) {
    classpath += (files('build/tmp/kotlin-classes/debug', "${android.sdkDirectory}/tools/lib/kotlin-stdlib-1.1.3-2.jar", getBuildDir().toString() + "/intermediates/classes/debug"))
    main = 'com.foo.app.home.parser.MainKt'
}

tasks.named('build') { dependsOn('configGeneratorTask') }

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "androidx.core:core-ktx:$androidx_core_ktx"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinx_serialization_version"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinx_serialization_version"
    implementation 'com.squareup:kotlinpoet:1.10.2'
}
4

0 回答 0