2016-02-23 5 views
8

Wie kann ich die Kotlin REPL im Rahmen meines Maven-Projekts betreiben?Run Kotlin REPL aus dem Kontext meines Maven-Projekts?

Dies funktioniert, aber hässlich:

kotlinc-jvm -cp target/classes/:`ruby -e "puts Dir['target/**/*.jar'].join(':')"` 

ich verschiedene Variationen auf die folgende versucht haben (nach Maven mit dem Compiler JAR als Abhängigkeit kopieren), aber nichts funktioniert (Error: Could not find or load main class org.jetbrains.kotlin.runner.Main):

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
    <execution> 
    <goals> 
     <goal>exec</goal> 
    </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>java</executable> 
    <arguments> 
     <argument>-classpath</argument> 
     <classpath/> 
     <argument>-classpath</argument> 
     <argument>${project.basedir}/target/dependency/kotlin-compiler-1.0.0.jar</argument> 
     <argument>org.jetbrains.kotlin.runner.Main</argument> 
    </arguments> 
    </configuration> 
</plugin> 

Antwort

4

Bitte versuchen K2JVMCompiler statt, da es zur Zeit der Einstiegspunkt für REPL in kotlin-compiler.jar:

<configuration> 
    <executable>java</executable> 
    <arguments> 
     <argument>-classpath</argument> 
     <classpath/> 
     <argument>-classpath</argument> 
     <argument>${project.basedir}/target/dependency/kotlin-compiler-1.0.0.jar</argument> 
     <argument>org.jetbrains.kotlin.cli.jvm.K2JVMCompiler</argument> 
    </arguments> 
    </configuration> 
+0

Danke! Das lässt Maven die REPL finden. Die REPL kann jedoch keine Eingabe und nur Blöcke annehmen. Ich denke, es muss einen neuen Prozess hervorbringen. [This] (http://stackoverflow.com/questions/4668839/maven-and-exec-forking-a-process) könnte mir helfen, aber ich habe es noch nicht getestet. Alternativ, vielleicht gibt es eine Kotlin-spezifische Möglichkeit, dies zu tun? Ich würde denken, das wäre ein ziemlich häufiger Anwendungsfall für die REPL REPORT von Kotlin ... –

+1

Momentan nicht möglich, aber derzeit wird daran gearbeitet. Sie können Nachrichten in wenigen Wochen erwarten. Ich werde die Antwort dann aktualisieren. –

+1

Gab es jemals einen Fortschritt (Laden von REPL in Maven Kontext)? Ich bewerte Kotlin nach einer langen Pause erneut für ein neues Projekt, und das könnte ein Faktor sein, den man berücksichtigen sollte. Vielen Dank! –

Verwandte Themen