2016-02-25 13 views
8

現在、Gradleのスカラ統合はREPL機能を提供していません。 Scala REPLを適切なクラスパスでGradleから人間工学的に実行するにはどうすればよいですか?最小build.gradleScala REPL in Gradle

答えて

10

apply plugin: 'scala' 

repositories{ 
    mavenCentral() 
} 

dependencies{ 
    compile "org.scala-lang:scala-library:2.11.7" 
    compile "org.scala-lang:scala-compiler:2.11.7" 
} 

task repl(type:JavaExec) { 
    main = "scala.tools.nsc.MainGenericRunner" 
    classpath = sourceSets.main.runtimeClasspath 
    standardInput System.in 
    args '-usejavacp' 
} 

クレジットthis answerにstandardInputでSTDIN指示し、REPLを持ってする方法を説明するためには、引数と右のクラスパスを使用します。

scala-compilerライブラリは依存関係になっています。ここにはscala.tools.nsc.MainGenericRunnerがあります。オプションの数は、REPLを実行するために必要なコンソールから

  • --no-daemon、あなたはGradleのデーモンを使用している場合。現時点では、デーモンから実行された場合、REPLはキーストロークに応答しません。

  • --console plain。人気のある、しかし劣った選択肢は--quietです。これらのオプションを1つも指定せずに実行すると、REPLのプロンプトはGradleの進捗レポートによって汚染されます。 --console plainは、rlwrapが不要なようにreadlineの動作も調整するという利点があります。 REPLを実行するための

全コマンドがgradle repl --console plain --no-daemonあるので、あなたのシェルでエイリアスを作成することは理にかなっています。

+1

これは動作しますが、私は前のコマンドにキーを押しても行けません。あなたはそれを修正する方法を知っているかもしれません? – damluar

+0

私はこの時点でGradleを使用していませんが、頭の上からrlwrapを '--console plain'の代わりに' --quiet'を使って試してみるかもしれません。 –

関連する問題