ライブラリやフレームワークの開発なんかをしてて、動作確認は別のプロジェクトから利用したいって時のsbtのノウハウです。
skinny-frameworkでstandaloneのjarを実行するときに、コンテキストパスを指定できるようなパッチを実装した時に役立ちました。
ライブラリ実装 -> 利用サンプルに取り込み -> 動作確認 -> 最初に戻る
のサイクルを、ローカルの開発環境内で回すのに便利です。
ライブラリ側
特別な設定は必要ありません。
何か実装を修正した際に、sbt publishLocal
することで、ローカルの~/.ivy2/local
以下にjarを置くことができます。
例
$ cd mylib
$ sbt publishLocal
利用側
普通にライブラリを使うとき通りに、ライブラリの依存バージョンを指定してsbtをたたけば、出来たてほやほやのライブラリを利用できます。
例
libraryDependencies := Seq(
"kuchitama" %% "mylib" % "0.1-SNAPSHOT",
/// other dependencies
)
うまく取り込めない時
普通は、publishLocal時にはresolverの設定などは不要なはずなのですが、私の環境ではjarの取得に失敗していました。
原因の切り分けができていないのですが、sbtがライブラリを探しに行くresolverに~/.ivy2/local
を追加すると取得できました。
project/Build.scala
を下記のように修正しました。
resolvers ++= Seq(
"LocalRepo" at file(Path.userHome.absolutePath + "/.ivy2/local").getAbsolutePath
)
.sbt
については、未確認ですが、同様にsbtの形式で書けば問題ないハズです。