gradleプロジェクトでscala REPLにプロジェクトのpackageを使う
sbtを使っている場合
sbt console
で終わり.
ですがsbtを使ってないので仕方がない. 移行計画が終わっていない.
gradleを使っている場合
Method for launching a Scala REPL for a Gradle project. が参考になりました.
しかし一部廃止された構文を使っていたのでめっちゃハマりました.
注意.
<<
はもう使えません.
まずclasspathを出力するタスクを定義します.
task classpath {
println sourceSets.main.runtimeClasspath.asPath
}
この時何故かgradle
に-q
オプションを付けても実行時に
Running foobar
みたいな表示が消えてくれなかったので注意. 何故消えないのかは全く分からなかったのでtailで消しています.
これをscala
コマンドの-cp
に食わせれば読み込みは出来ます.
何故か矢印キーなどを認識しませんでした.
設定の問題なのかもしれませんがどうせsbtに移行したら消滅するものに手を書けても仕方がないのでrlwrap
を噛ませます.
rlwrap
を使ったら色表示をしなくなったので-Dscala.color=true
を付けます.
プロンプトの色表示は消えましたがまあそれぐらいは良いでしょう.
実行するスクリプトにrepl
とでも名付けて置いておきます.
#!/usr/bin/env bash
set -eu
rlwrap scala -Dscala.color=true -cp `./gradlew -q classpath|tail --lines=1`
これでとりあえずのREPLとして使えます.
本当はsbt console
が使いたいですがひとまずgradleのまましのぐには有効です.