27
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

sbtでpublishLocalしたjarを取り込んで開発サイクルを回す

Last updated at Posted at 2014-03-27

ライブラリやフレームワークの開発なんかをしてて、動作確認は別のプロジェクトから利用したいって時のsbtのノウハウです。
skinny-frameworkでstandaloneのjarを実行するときに、コンテキストパスを指定できるようなパッチを実装した時に役立ちました。

ライブラリ実装 -> 利用サンプルに取り込み -> 動作確認 -> 最初に戻る

のサイクルを、ローカルの開発環境内で回すのに便利です。

ライブラリ側

特別な設定は必要ありません。
何か実装を修正した際に、sbt publishLocal することで、ローカルの~/.ivy2/local 以下にjarを置くことができます。

$ cd mylib
$ sbt publishLocal

利用側

普通にライブラリを使うとき通りに、ライブラリの依存バージョンを指定してsbtをたたけば、出来たてほやほやのライブラリを利用できます。

Build.scala
libraryDependencies := Seq(
  "kuchitama"    %% "mylib"   % "0.1-SNAPSHOT",
  /// other dependencies
  )

うまく取り込めない時

普通は、publishLocal時にはresolverの設定などは不要なはずなのですが、私の環境ではjarの取得に失敗していました。
原因の切り分けができていないのですが、sbtがライブラリを探しに行くresolverに~/.ivy2/localを追加すると取得できました。
project/Build.scalaを下記のように修正しました。

Build.scala
resolvers ++= Seq(
      "LocalRepo" at file(Path.userHome.absolutePath + "/.ivy2/local").getAbsolutePath
    )

.sbtについては、未確認ですが、同様にsbtの形式で書けば問題ないハズです。

27
22
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?