Gradle 项目中的 .kts 脚本

vod*_*dan 5 gradle kotlin

我有一个 Kotlin Gradle 项目。

如果我创建一个.kts文件,它会在 InteliJ 中运行,除非它在/src/main/kotlin文件夹中。

IDEA 以红色突出显示整个文件。Gradle 抛出编译异常。例外是

...src/main/kotlin/test.kts: (3, 1): Cannot access script base class 'kotlin.script.templates.standard.ScriptTemplateWithArgs'. Check your module classpath for missing or conflicting dependencies`. 
Run Code Online (Sandbox Code Playgroud)

问题是什么?

我的build.gradle

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.0-rc-131'
}

group 'kotlin.tutorials.coroutines'
version '1.0-SNAPSHOT'

repositories {
    maven {     url 'http://dl.bintray.com/kotlin/kotlin-eap' }
    mavenCentral()
    jcenter()
    maven { url "https://dl.bintray.com/kotlin/ktor" }
}

ext.ktor_version = '1.0.0-alpha-1'
ext.coroutines_version = '0.30.2-eap13'

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    compile "io.ktor:ktor-server-netty:$ktor_version"
    compile "ch.qos.logback:logback-classic:1.2.3"

    //KTOR features
    compile "io.ktor:ktor-jackson:$ktor_version"
    compile "io.ktor:ktor-auth:$ktor_version"
    compile "io.ktor:ktor-auth-jwt:$ktor_version"
    compile "io.ktor:ktor-freemarker:$ktor_version"
    compile "io.ktor:ktor-html-builder:$ktor_version"
}

compileKotlin.kotlinOptions.jvmTarget = "1.8"
compileTestKotlin.kotlinOptions.jvmTarget = "1.8"
Run Code Online (Sandbox Code Playgroud)

Ada*_*old 2

.kts文件应该转到该src/main/resources文件夹​​,因为src/main/kotlin它是用于.kt文件的。

从这个意义上讲,脚本是一种完全不同的动物,您应该使用KtsRunner之类的东西来执行它们。

相关问题在这里

如果您只想使用 IDEA 中的脚本,那么您应该使用开箱即用支持的Scratch 文件。