2016-02-25 28 views

risposta

10

Minimal build.gradle:

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

credito per this answer per spiegare come dirigere stdin con standardInput e hanno REPL utilizzare il classpath destro con args.

Avviso la libreria scala-compiler è una dipendenza. Ecco dove viene trovato scala.tools.nsc.MainGenericRunner.

Dalla console sono necessarie una serie di opzioni per eseguire il REPL:

  • --no-daemon, se si utilizza un demone Gradle. Al momento, REPL non risponde alle sequenze di tasti se eseguito dal daemon.

  • --console plain. Un'alternativa popolare, ma inferiore è --quiet. Se viene eseguito senza una di queste opzioni, il prompt REPL viene contaminato dal report dei progressi di Gradle. --console plain ha il vantaggio che regola anche il comportamento di readline in modo che rlwrap non sia necessario.

di comando completa per eseguire il REPL è gradle repl --console plain --no-daemon, in modo da creare un alias nella shell ha un senso.

+1

funziona, ma non riesco ad andare al comando precedente con una chiave. potresti sapere come risolverlo? – damluar

+0

Non sto usando Gradle in questo momento, ma in cima alla mia testa potresti provare a usare rlwrap con '--quiet' invece di' --console plain'. –