如何在我的Maven项目上下文中运行Kotlin REPL?

9

我该如何在我的Maven项目上下文中运行Kotlin REPL?

这样做可以实现,但很丑陋:

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

我尝试了不同的变化(在使用Maven将编译器JAR作为依赖项后),但没有任何效果(错误:找不到或加载主类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>
1个回答

5

请尝试使用 K2JVMCompiler,因为它是目前在 kotlin-compiler.jar 中 REPL 的入口点:

<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>

谢谢!这确实让Maven找到了REPL。然而,REPL无法接受输入并且会阻塞。我猜它需要生成一个新的进程。这个链接或许对我有帮助,但我还没有测试过。另外,也许有一种适用于Kotlin的特定方法来实现这个?我认为这应该是Kotlin REPL的常见用例之一... - Jacob Brown
1
目前还不可能,但正在进行中。您可以在几周内期待新闻。我会在那时更新答案。 - Alexander Udalov
1
这个问题(在Maven上下文中加载REPL)是否有任何进展?我在长时间休息后重新评估Kotlin用于一个新项目,这可能是要考虑的因素。谢谢! - Jacob Brown
很抱歉,我认为自从我的回答以来没有什么显著的改进。如果您仍然无法使 REPL 工作,请在 kotl.in/issue 上报告问题,我们会研究一下。谢谢! - Alexander Udalov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接