自作Scalaのライブラリを、sbtの依存ライブラリに入れる方法
以下のサイトを参考にしました。
http://blog.takumibaba.com/post/62023920631/sbt-scala
sbtでpublishLocalしたjarを取り込んで開発サイクルを回す - Qiita
以下の作業はIntelliJ IDEAを使っているという仮定です。
1.ライブラリのプロジェクト(というかモジュール)をIntelliJ IDEAで作って、ライブラリを作成。(ZipLoanというライブラリにします)
2.とくに何も考えずに、SBTのコンソールから、publish-localをする。すると、ivyにlocalというディレクトリができて以下の様な感じになる。
3.ivys/ivy.xmlを見るとこんなかんじになっている。
<?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra"> <info organisation="ziploan" module="ziploan_2.10" revision="1.0" status="release" publication="20140423202507"> <description> ZipLoan </description> </info> <configurations> <conf name="compile" visibility="public" description=""/> <conf name="runtime" visibility="public" description="" extends="compile"/> <conf name="test" visibility="public" description="" extends="runtime"/> <conf name="provided" visibility="public" description=""/> <conf name="optional" visibility="public" description=""/> <conf name="sources" visibility="public" description=""/> <conf name="docs" visibility="public" description=""/> <conf name="pom" visibility="public" description=""/> </configurations> <publications> <artifact name="ziploan_2.10" type="pom" ext="pom" conf="pom"/> <artifact name="ziploan_2.10" type="jar" ext="jar" conf="compile"/> <artifact name="ziploan_2.10" type="src" ext="jar" conf="sources" e:classifier="sources"/> <artifact name="ziploan_2.10" type="doc" ext="jar" conf="docs" e:classifier="javadoc"/> </publications> <dependencies> <dependency org="org.scala-lang" name="scala-library" rev="2.10.2" conf="compile->default(compile)"/> </dependencies> </ivy-module>
ポイントとなるのは、organization="ziploan"、module="ziploan_2.10"、revision="1.0"の三点。この3つを覚えておいて、つぎの段階ではbuild.sbtに記述する。
4.ZipLoadを使いたいモジュールを開いて、build.sbtに以下を記述。
resolvers ++= Seq( "LocalRepo" at file(Path.userHome.absolutePath + "/.ivy2/local").getAbsolutePath ) libraryDependencies ++= Seq( "ziploan" %% "ziploan" % "1.0" )
resolversに追加した、"LocalRepo" at file(Path.userHome.absolutePath + "/.ivy2/local").getAbsolutePath はそのままで変更不要です。
はじめのziploanはorganization、つぎのziploanはmoduleとしてivy.xmlに記述されているもの。なお、moduleの_2.10は不要らしい。
これでRefreshすれば多分うまくいくはず。