Скрипт .kts в проекте Gradle - PullRequest
       5

Скрипт .kts в проекте Gradle

0 голосов
/ 11 октября 2018

У меня есть проект 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`. 

В чем проблема?

Мой 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 голосов
/ 11 октября 2018

Решение оказалось очень простым.

Компилятору не удалось найти служебные классы, которые обычно добавляются в какой-либо путь к классу сценария Kotlin.Добавление одной зависимости к моему build.gradle исправило это:

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

PS

Я создал 2 заявки для улучшения поддержки сценариев Kotlin в InteliJ:

Если вам интересны эти функции, пожалуйста, оцените их!

0 голосов
/ 11 октября 2018

.kts файлы должны идти в папку src/main/resources, поскольку src/main/kotlin для .kt файлов.

Сценарии - это совершенно другое животное в этом смысле, и вы должны использовать что-то вроде KtsRunner для их выполнения.

Смежный вопрос здесь .

Если вы просто хотите использовать скрипты из IDEA, то вам следует использовать Scratchфайлы , которые поддерживаются "из коробки".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...