Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
22
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

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

ライブラリやフレームワークの開発なんかをしてて、動作確認は別のプロジェクトから利用したいって時の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の形式で書けば問題ないハズです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
22
Help us understand the problem. What are the problem?