RaspberryPi2にArchivaセットアップしたメモ その２


前回の続き。
管理者の登録と、リポジトリのプロキシ機能の確認まで。


## 管理者登録

ブラウザで`http://{ラズパイのIP}:8080/archiva`にアクセス。

> トップページの初期化が遅い・・・。

右上の`Create Admin User`ボタン押して、以下の項目を入力。

* Username
* Full Name
* Password
* Confirm Password
* Email Address

以下のチェックボックスはOFFのままで。

* Validated
* Locked
* Change password required

`Save`ボタンを押下。

> パスワードは８文字以上で数値を含む必要がある。

> ユーザ名を変えられそうなUIになっているが`admin`でなければならないらしい。
  別のユーザ名を入力しても無視されて`admin`のまま。
  なんだこの仕様は・・・。


## リポジトリの確認

デフォルトで`internal`と`snapshot`の２つのリポジトリが用意されている。

`internal`はMevenCentralのプロキシにもなっていて、
このリポジトリにMavenCentralにあるアーティファクトを要求すると
Centralから取ってきてキャッシュするらしい。

「Centralから取ってきてキャッシュするらしい」
というのがホントかどうか試してみる。

MavenでもGradleでもいいのだが、sbtで。

### ラズパイに建てたArchivaを参照するようにsbtを設定。

```bash
# me@mac.local
$ cat <<'EOF'> ~/.sbt/repositories
[repositories]
  local
  internal: http://{ラズパイのIP}:8080/archiva/repository/internal/
EOF
```

URLは

1. adminでログイン
2. 左側の`Repositories`メニューからリポジトリ一覧を表示
3. `internal`のActionから`Pom Snippet`を選択

で表示されるxmlの中から拾ってくる。


### ローカルのキャッシュを消す。

```bash
# me@mac.local
$ rm -rf .ivy2/cache/*
```

### テスト用のsbtプロジェクトを作る。

```bash
# me@mac.local
$ mkdir test
$ cd test

# maven-centralにあるやつならなんでもいい。
$ cat <<'EOF'> build.sbt
libraryDependencies += "org.apache.derby" % "derby" % "10.12.1.1"
EOF

$ cat <<'EOF'> sample.scala
object Main extends App {
  println("sample!!")
}
EOF
```

できたら、実行。

```bash
$ sbt run
    :
[error] Unable to find credentials for [Repository Archiva Managed internal Repository @ raspberrypi].
    :
```

失敗。
archiva.logにも`Authorization Denied`と出ていた。

ID/PWが必要らしい。
Credentialの設定をすればいいのだろうが、参照だけでID/PW求められるのもうざい。

### ID/PWなしでアーティファクトを取得できるようにする。

ユーザ／ロール周りの仕組みは[redback](http://archiva.apache.org/redback/)を使ってるらしい。

> redbackよく知らない・・・。

軽く触ってみた感じでは新たにロールを作ったり、
既存のロールに権限を追加／削除することはできなさそう。

> 設定ファイルとかイジればできるのかもしれんが、とりあえずUIからはできなさそう。

あと眺めてて気づいたのはロールに親子関係がある様子。

`guest`というユーザがいるので、これに`Repository Manager`ロールをつければできそうな予感。

1. adminでログイン
2. 左側メニューのUSERSカテゴリの`Manage`からユーザ一覧を表示
3. `Edit`（鉛筆のアイコン）
4. `Edit Roles`リンク
5. `internal`と`snapshots`の`Repository Manager`チェックをON。

`Update`。

### リトライ。

```bash
# me@mac.local
$ sbt run
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.jar ...
[info]  [SUCCESSFUL ] org.scala-lang#scala-library;2.10.5!scala-library.jar (1473ms)
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/com/typesafe/config/1.3.0/config-1.3.0.jar ...
[info]  [SUCCESSFUL ] com.typesafe#config;1.3.0!config.jar(bundle) (132ms)
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/org/scala-lang/scala-compiler/2.10.5/scala-compiler-2.10.5.jar ...
[info]  [SUCCESSFUL ] org.scala-lang#scala-compiler;2.10.5!scala-compiler.jar (2409ms)
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/org/scala-lang/scala-reflect/2.10.5/scala-reflect-2.10.5.jar ...
[info]  [SUCCESSFUL ] org.scala-lang#scala-reflect;2.10.5!scala-reflect.jar (535ms)
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/org/scala-lang/jline/2.10.5/jline-2.10.5.jar ...
[info]  [SUCCESSFUL ] org.scala-lang#jline;2.10.5!jline.jar (128ms)
    :
[info] downloading http://{ラズパイのIP}:8080/archiva/repository/internal/org/fusesource/jansi/jansi/1.4/jansi-1.4.jar ...
[info]  [SUCCESSFUL ] org.fusesource.jansi#jansi;1.4!jansi.jar (77ms)
    :
[info] Running Main 
sample!!
```

> ログは途中割愛。

できた！
・・・が遅い。

### どこにキャッシュされているのか・・・?

できたはいいが、Achivaのどこに置いてあるのか探してみる。

```bash
# archiva@raspberrypi
$ find ~ -type f -name 'scala-library*'
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.pom.sha1
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.jar.md5
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.jar.sha1
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.pom.md5
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.jar
/home/archiva/repositories/internal/org/scala-lang/scala-library/2.10.5/scala-library-2.10.5.pom
```

`repositories/internal`にある模様。

`~/.sbt/repositories`に設定したURLで、ブラウザからも閲覧可能。
scala-libraryなら↓このURL。

`http://{ラズパイのIP}:8080/archiva/repository/internal/org/scala-lang/scala-library/`

----

自前のプロジェクトをリポジトリに登録してみる実験もしてみなければ・・・。

参考資料：
[Apache Archiva](http://archiva.apache.org/docs/2.2.0/)
[SBT | Dependency Management](http://www.scala-sbt.org/0.13/docs/Dependency-Management-Index.html)