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のまましのぐには有効です.
hatena-bookmark