sbtでAmazon S3をMavenリポジトリとして扱う方法

fm-sbt-s3-resolverというプラグインを入れることでS3をMaven Repositoryとして扱えるようになります。社内のサーバにリポジトリを構築するよりお手軽です。

Setup

project/plugin.sbt:

addSbtPlugin("com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.5.0")

事前にAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを環境変数で定義しておくこと。またはProperty Fileを$HOME/.sbt以下に作成しておく。

$ export AWS_ACCESS_KEY_ID=xxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxx

or

$ cat ~/.sbt/.bucket-name_s3credentials
accessKey = xxxxxx
secretKey = xxxxxx

Publish

build.sbtにPublish先を設定する。

publishTo := Some("Hoge Snapshots" at "s3://hoge-maven.s3-ap-northeast-1.amazonaws.com/hoge/snapshots")

これでsbt publishコマンドでS3にPublishできる。

Usage

resolversにS3に置いたMavenリポジトリを追加する。

resolvers += "Hoge Snapshots" at "s3://hoge-maven.s3-ap-northeast-1.amazonaws.com/hoge/snapshots"

あとはライブラリと同様にlibraryDependenciesに依存関係を書いていくだけ。

libraryDependencies ++= Seq(
  "foo.bar" %% "hoge-project" % "1.0-SNAPSHOT"
)