Kotlin 脚本 ( .main.kts
) 文件的想法是在一个独立的文件中提供可执行的 Kotlin 代码,这对于编写脚本或在 StackOverflow 上共享代码片段时非常方便。与此相反,目前几乎所有的 Java/Kotlin 都使用带有神秘构建文件和深层文件夹结构的构建系统(例如 gradle)。
虽然我非常喜欢 Kotlin 脚本的想法,但它似乎很少被使用,StackOverflow 上只有 22 个问题,文档极其稀疏,谷歌搜索结果很少。我可以使用@file:DependsOn
实际脚本内部而不是传统的构建文件来引入依赖项:
build.gradle
:
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0'
}
foo.main.kts
:
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0")
但是,我找不到在我的.main.kts
文件中使用“应用插件”的方法。我在网上找到的任何代码片段中都没有使用它。
build.gradle
:
apply plugin: 'kotlinx-serialization'
foo.main.kts
:
???
作为参考,我在下面附上了一个 MWE。错误消息说该类不可序列化,但正如在这个问题Node
中指出的那样,该消息具有误导性,并且缺少实际问题,我不知道如何在文件之外使用: apply plugin
build.gradle
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.0")
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class Node (val numbers: List<Int>)
val h = Json.decodeFromString<Node>(""" {"numbers": [1, 2, 3]} """)
在 Ubuntu 上运行它:
snap install kotlin
kotlin foo.main.kts