Kotlin scripting support utilities library that provides infrastructure for implementing Kotlin script execution, including JSR-223 script engine implementations, dependency resolution, and utilities for classpath management in scripting contexts
npx @tessl/cli install tessl/maven-org-jetbrains-kotlin--kotlin-script-util@1.8.0Kotlin Script Util provides essential utilities and infrastructure for Kotlin scripting functionality, including JSR-223 compliant script engines that allow Kotlin scripts to be executed within Java applications, dependency resolvers for managing script dependencies at runtime, and classpath management utilities for dynamic script compilation.
org.jetbrains.kotlin:kotlin-script-util:1.8.22// JSR-223 Script Engine Factories
import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmDaemonLocalEvalScriptEngineFactory
// Script Templates
import org.jetbrains.kotlin.script.jsr223.KotlinStandardJsr223ScriptTemplate
import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithLocalResolving
// Dependency Annotations (deprecated)
import org.jetbrains.kotlin.script.util.DependsOn
import org.jetbrains.kotlin.script.util.Repositoryimport org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngineFactory
import javax.script.ScriptEngineManager
// Create and use a JSR-223 Kotlin script engine
val factory = KotlinJsr223JvmLocalScriptEngineFactory()
val engine = factory.scriptEngine
// Execute Kotlin code
val result = engine.eval("2 + 2")
println(result) // 4
// Use bindings to pass data to scripts
val bindings = engine.createBindings()
bindings["x"] = 10
bindings["y"] = 20
val sum = engine.eval("x + y", bindings)
println(sum) // 30The library is organized into several key components:
Core script engine implementations and factories for executing Kotlin code through the standard Java scripting API.
class KotlinJsr223JvmLocalScriptEngineFactory : KotlinJsr223JvmScriptEngineFactoryBase {
fun getScriptEngine(): ScriptEngine
}
class KotlinJsr223JvmDaemonLocalEvalScriptEngineFactory : KotlinJsr223JvmScriptEngineFactoryBase {
fun getScriptEngine(): ScriptEngine
}Predefined templates that provide structured environments for script execution with different parameter passing mechanisms.
abstract class KotlinStandardJsr223ScriptTemplate(val jsr223Bindings: Bindings) : ScriptTemplateWithBindings {
fun eval(script: String, newBindings: Bindings): Any?
fun eval(script: String): Any?
fun createBindings(): Bindings
}Legacy utilities for classpath management during script compilation. All functions redirect to newer implementations in kotlin-scripting-* libraries.
fun classpathFromClassloader(classLoader: ClassLoader): List<File>?
fun scriptCompilationClasspathFromContext(
vararg keyNames: String,
classLoader: ClassLoader = Thread.currentThread().contextClassLoader,
wholeClasspath: Boolean = false
): List<File>Legacy dependency resolution system for scripts with annotation-based dependency declarations.
class KotlinAnnotatedScriptDependenciesResolver(
val baseClassPath: List<File>,
resolvers: Iterable<Resolver>
) : ScriptDependenciesResolver
@Target(AnnotationTarget.FILE)
@Repeatable
annotation class DependsOn(
val value: String = "",
val groupId: String = "",
val artifactId: String = "",
val version: String = ""
)// From javax.script package
interface ScriptEngine {
fun eval(script: String): Any?
fun eval(script: String, context: ScriptContext): Any?
fun createBindings(): Bindings
}
interface Bindings : MutableMap<String, Any?>
interface ScriptContext {
fun getBindings(scope: Int): Bindings
fun setBindings(bindings: Bindings, scope: Int)
}