我有一个包含 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'
}