Al momento l'integrazione scala di Gradle non offre funzionalità REPL. Come eseguire ergonomicamente un REPL di Scala da Gradle con il classpath appropriato?Scala REPL in Gradle
risposta
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 cherlwrap
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.
funziona, ma non riesco ad andare al comando precedente con una chiave. potresti sapere come risolverlo? – damluar
Non sto usando Gradle in questo momento, ma in cima alla mia testa potresti provare a usare rlwrap con '--quiet' invece di' --console plain'. –