Hoe kan ik Kotlin-Script (.kts) bestanden uitvoeren vanuit Kotlin/Java?
Merk op dat de ondersteuning van scriptbestanden in Kotlin nog vrij experimenteel is. Dit is een ongedocumenteerde functie die we nog aan het ontwerpen zijn. Wat vandaag werkt, kan morgen veranderen, breken of verdwijnen.
Dat gezegd hebbende, zijn er momenteel twee manieren om een script aan te roepen. U kunt de opdrachtregelcompiler gebruiken:
kotlinc -script foo.kts <args>
Of u kunt het script rechtstreeks vanuit IntelliJ IDEA aanroepen door met de rechtermuisknop in de editor of in de projectweergave op een .kts-bestand te klikken en "Uitvoeren ..." te selecteren:
KtsRunner
Ik heb een eenvoudige bibliotheek gepubliceerd waarmee je scripts van reguliere Kotlin-programma's kunt uitvoeren.
https://github.com/s1monw1/KtsRunner
Voorbeeld
-
De voorbeeldklasse
data class ClassFromScript(val x: String)
-
De
.kts
bestandimport de.swirtz.ktsrunner.objectloader.ClassFromScript ClassFromScript("I was created in kts")
-
De code om de klas te laden
val scriptReader = Files.newBufferedReader(Paths.get("path/classDeclaration.kts")) val loadedObj: ClassFromScript = KtsObjectLoader().load<ClassFromScript>(scriptReader) println(loadedObj.x) // >> I was created in kts
Zoals getoond, is de KtsObjectLoader
class kan worden gebruikt voor het uitvoeren van een .kts
script en retourneer het resultaat. Het voorbeeld toont een script dat een instantie maakt van de ClassFromScript
type dat wordt geladen via KtsObjectLoader
en vervolgens verwerkt in het reguliere programma.