The better way to define a script is to use `@Kotl...
# getting-started
n
The better way to define a script is to use
@KotlinScript
annotation on the base class with a configuration object, and then construct a configuration from it. And then
BasicJvmScriptingHost
now have all needed defaults. So the resulting code may look like:
Copy code
object MyScriptConfiguration : ScriptCompilationConfiguration({
    defaultImports("org.apache.camel")
    jvm {
        dependenciesFromCurrentContext(wholeClasspath = true)
        javaHome(File("/opt/data/sfw/lang/java/8"))
    }
})

@KotlinScript(compilationConfiguration = MyScriptConfiguration::class)
abstract class MyScript(var name: String) {
    fun say(message : String) {
        println(name + ":" + message)
    }
}

fun main(args: Array<String>) {
    val script = """
        say("hello kts!")
    """

    val config = createJvmCompilationConfigurationFromTemplate<MyScript>()

    val evalu = ScriptEvaluationConfiguration {
        constructorArgs("injected")
    }

    val result = BasicJvmScriptingHost().eval(script.toScriptSource(), config, evalu)

    for (report in result.reports) {
        println(report)
    }
}
Posted in #scripting