Comment puis-je lancer Kotlin-Script (.kts) des fichiers de Kotlin / Java?
j'ai remarqué que IntelliJ peut Parser .kts
les fichiers que Kotlin et l'éditeur de code ramasse comme flottant Kotlin fichiers. Vous pouvez également exécuter le script dans IntelliJ comme vous le feriez pour un fichier Kotlin avec une méthode principale. Le script s'exécute de haut en bas.
ce formulaire est parfait pour le projet sur lequel je travaille, si seulement je savais comment les utiliser facilement depuis Java ou Kotlin.
Quelle est la façon idiomatique de "lancer" ces scripts depuis Java ou Kotlin?
2 réponses
notez que le support des fichiers script dans Kotlin est encore assez expérimental. C'est une fonctionnalité non documentée que nous sommes encore en train de concevoir. Ce qui fonctionne aujourd'hui peut changer, casser ou disparaître demain.
cela dit, il y a actuellement deux façons d'invoquer un script. Vous pouvez utiliser le compilateur de ligne de commande:
kotlinc -script foo.kts <args>
ou vous pouvez invoquer le script directement depuis IntelliJ IDEA, en cliquant avec le bouton droit de la souris dans l'éditeur ou dans la vue de projet sur A.fichier kts et en sélectionnant "Exécuter ...":
KtsRunner
j'ai publié une bibliothèque simple qui vous permet d'exécuter des scripts à partir de programmes Kotlin réguliers.
https://github.com/s1monw1/KtsRunner
Exemple
la classe exemple
data class ClassFromScript(val x: String)
.kts
le fichierimport de.swirtz.ktsobjectloader.ClassFromScript ClassFromScript("I was created in kts")
le code pour charger la classe
val scriptReader = Files.newBufferedReader(Paths.get("path/classDeclaration.kts")) val loadedObj: ClassFromScript = KtsObjectLoader().load<ClassFromScript>(scriptReader) println(loadedObj.x) // >> I was created in kts
Comme indiqué, le KtsObjectLoader
classe peut être utilisé pour l'exécution d'un .kts
script et retourner son résultat. L'exemple montre un script qui crée une instance de l' ClassFromScript
type qui est chargé à l'aide de KtsObjectLoader
puis traitées dans le programme régulier.