2016-02-23 36 views
8

Jak mogę uruchomić REPL Kotlin w kontekście mojego projektu Maven?Uruchom Kotlin REPL z kontekstu mojego projektu Maven?

To działa, ale jest brzydki:

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

Próbowałem różne wariacje na następnej (po użyciu Maven skopiować JAR kompilatora jako zależność), ale nic nie działa (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> 

Odpowiedz

4

spróbuj K2JVMCompiler zamiast tego, ponieważ jest to obecnie punkt_wejścia dla REPL w 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

Dzięki! To pozwoli Mavenowi znaleźć REPL. Jednak REPL nie może przyjmować danych wejściowych i tylko bloków. Myślę, że musi odrodzić się nowy proces. [This] (http://stackoverflow.com/questions/4668839/maven-and-exec-forking-a-process) może mi pomóc, ale jeszcze tego nie testowałem. Alternatywnie, może jest jakiś sposób, aby to zrobić? Sądzę, że byłby to dość powszechny przypadek użycia dla Kotlin REPL ... –

+1

Obecnie nie jest to możliwe, ale obecnie trwają prace nad nim. Możesz spodziewać się wiadomości w ciągu kilku tygodni. Zaktualizuję odpowiedź. –

+1

Czy kiedykolwiek był jakiś postęp w tym zakresie (ładowanie REPL w kontekście Maven)? Ponownie oceniam Kotlin dla nowego projektu po długiej przerwie i to może być czynnik do rozważenia. Dzięki! –