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?

21
demandé sur Jire 2016-01-24 12:18:57

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 ...":

Run .kts from IntelliJ IDEA

23
répondu Alexander Udalov 2016-01-24 12:14:01

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

  1. la classe exemple

    data class ClassFromScript(val x: String)
    
  2. .kts le fichier

    import de.swirtz.ktsobjectloader.ClassFromScript
    
    ClassFromScript("I was created in kts")
    
  3. 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.

3
répondu s1m0nw1 2018-05-08 18:32:10