前回の続き。
自前のプロジェクトをアップロードしてみる。
ラズパイのIPを打つのが面倒なので、
/etc/hosts
にraspi
と書いておいた。
avahi-daemonをキチント設定すれば、こんな面倒もないらしい。停止したけど。。。
サンプルプロジェクト
前回、guestユーザに「Repository Manager」ロールを付与したので
アップロード先を指定するだけでOKな気がする。
なので、↓こんなbuild.sbt
を書いた。
lazy val root = (project in file(".")).settings(
organization := "orz.sample", // groupIdになる
name := "project", // artifactIdになる
version := "1.0.0-SNAPSHOT",
scalaVersion := "2.11.7",
scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"),
publishMavenStyle := true, // trueにするとpomを作ってくれる(らしい)
// アップロード先
publishTo := Some("snapshots" at "http://raspi:8080/archiva/repository/snapshots/")
)
publishTo
に指定するのは、pom.xmlのdistributionManagement
に書く内容。
pom.xmlに書くべき内容は、ArchivaのRepositoriesメニューから表示させることができる。
リポジトリリストの「Actions」ボタンから「Pom Snippet」を選択すると・・・
画面下部にxmlが表示される。
選択範囲のid
とurl
の箇所をコピーして
Some("{id}" at "{url}")
とすればOK。
アップロードしてみる。
$ sbt publish
:
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.0-SNAPSHOT/project_2.11-1.0.0-SNAPSHOT.pom
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.0-SNAPSHOT/project_2.11-1.0.0-SNAPSHOT.jar
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.0-SNAPSHOT/project_2.11-1.0.0-SNAPSHOT-sources.jar
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.0-SNAPSHOT/project_2.11-1.0.0-SNAPSHOT-javadoc.jar
[success] Total time: 8 s, completed 2015/11/08 16:25:56
できた!
Archivaも見てみる。
ヨシ、できてる。
認証ありの場合
guestはID/PWなしでアップロードできるようにしたので
今度は認証必要にして試してみる。
testユーザを作成して「Repository Manager」ロールを付与。
guestからは「Repository Manager」ロールを剥奪しておく。
guestでアップロードできなくなっているはず・・・。
$ sbt publish
:
[error] Unable to find credentials for [Repository Archiva Managed snapshots Repository @ raspi].
java.io.IOException: Access to URL http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.0-SNAPSHOT/project_2.11-1.0.0-SNAPSHOT.pom was refused by the server: Unauthorized
想定どおり、失敗。
build.sbt
に認証情報を追記。
lazy val root = (project in file(".")).settings(
organization := "orz.sample", // groupIdになる
name := "project", // artifactIdになる
version := "1.0.1-SNAPSHOT",
scalaVersion := "2.11.7",
scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked"),
publishMavenStyle := true, // trueにするとpomを作ってくれる(らしい)
// アップロード先
publishTo := Some("snapshots" at "http://raspi:8080/archiva/repository/snapshots/"),
// 認証情報(リポジトリの名前, host, ID, PW)
credentials += Credentials("Repository Archiva Managed snapshots Repository", "raspi", "test", "passwd1234")
)
credentials
に指定する内容は、、、
credentials += Credentials("{リポジトリ名}", "{ホスト名}", "{ID}", "{PW}")
publishTo
に指定した「リポジトリID」ではなく「リポジトリ名」を指定する。
リポジトリ名はArchivaで確認。
$ sbt publish
:
[info] Done packaging.
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.1-SNAPSHOT/project_2.11-1.0.1-SNAPSHOT.pom
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.1-SNAPSHOT/project_2.11-1.0.1-SNAPSHOT.jar
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.1-SNAPSHOT/project_2.11-1.0.1-SNAPSHOT-sources.jar
[info] published project_2.11 to http://raspi:8080/archiva/repository/snapshots/orz/sample/project_2.11/1.0.1-SNAPSHOT/project_2.11-1.0.1-SNAPSHOT-javadoc.jar
[success] Total time: 4 s, completed 2015/11/08 17:31:17
Archivaも確認。
1.0.1-SNAPSHOT
ができている。OK!
これで一通りは確認できた。満足。
関係ないがarchiva.log
には以下のようなバナーが出る。
__________________________________
/\_ / \
/`/@), | On behalf of all of the alpacas |
| (~' __| toiling away on the Apache Archiva |
_,--.___/ | \ project team, I would like to |
,' , ( | \ welcome you to Archiva |
| ( \ / | 2.2.0 |
\ )\_/ ,_/ | |
/ / ( |/ | http://archiva.apache.org/ |
( | ( | | users@archiva.apache.org |
\| \| \__________________________________/
archivaとアルパカの関係性は不明。