我正在尝试制作类似于Gradle构建脚本的配置文件,但是我不知道如何评估使用DSL的.kts文件
我已经尝试过使用KotlinJsr223JvmLocalScriptEngineFactory,但这在绑定变量时非常难看,而且我不知道是否可以将DSL的上下文设置为其他内容。
我已经尝试过了:
import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
fun main() {
val source = """
println("Hi!")
println(bindings["a"])
""".trimIndent()
val engine = KotlinJsr223JvmLocalScriptEngineFactory().scriptEngine
engine.eval(source, engine.createBindings().apply {
put("a", "b")
})
}
但这不支持很多东西,例如默认导入,设置this
上下文(我不确定它的真正含义)以及很好。我已尝试关注making auto completion work in kotlin scripts,但不起作用。