Gradle项目中的.kts脚本

时间:2018-10-11 13:12:42

标签: gradle kotlin

我有一个Kotlin Gradle项目。

如果我创建一个.kts文件,则当它位于/src/main/kotlin文件夹中时,它将在InteliJ中运行,除了

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`. 

出什么问题了?

我的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"

2 个答案:

答案 0 :(得分:2)

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

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

相关问题是here

如果您只想使用IDEA中的脚本,则应该使用开箱即用的Scratch files

答案 1 :(得分:1)

结果很简单。

编译器找不到通常添加到任何Kotlin脚本类路径中的实用程序类。在我的build.gradle中添加一个依赖项可以解决此问题:

dependencies {
    compile "org.jetbrains.kotlin:kotlin-scripting-jvm"
}

P.S。

我创建了2张票证,以改善InteliJ中对Kotlin脚本的支持:

如果您关心这些功能,请对其进行投票!