• 作成:

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