前回の続き。
管理者の登録と、リポジトリのプロキシ機能の確認まで。
管理者登録
ブラウザでhttp://{ラズパイのIP}:8080/archiva
にアクセス。
トップページの初期化が遅い・・・。
右上のCreate Admin User
ボタン押して、以下の項目を入力。
- Username
- Full Name
- Password
- Confirm Password
- Email Address
以下のチェックボックスはOFFのままで。
- Validated
- Locked
- Change password required
Save
ボタンを押下。
パスワードは8文字以上で数値を含む必要がある。
ユーザ名を変えられそうなUIになっているが
admin
でなければならないらしい。
別のユーザ名を入力しても無視されてadmin
のまま。
なんだこの仕様は・・・。
リポジトリの確認
デフォルトでinternal
とsnapshot
の2つのリポジトリが用意されている。
internal
はMevenCentralのプロキシにもなっていて、
このリポジトリにMavenCentralにあるアーティファクトを要求すると
Centralから取ってきてキャッシュするらしい。
「Centralから取ってきてキャッシュするらしい」
というのがホントかどうか試してみる。
MavenでもGradleでもいいのだが、sbtで。
ラズパイに建てたArchivaを参照するようにsbtを設定。
# me@mac.local
$ cat <<'EOF'> ~/.sbt/repositories
[repositories]
local
internal: http://{ラズパイのIP}:8080/archiva/repository/internal/
EOF
URLは
- adminでログイン
- 左側の
Repositories
メニューからリポジトリ一覧を表示 -
internal
のActionからPom Snippet
を選択
で表示されるxmlの中から拾ってくる。
ローカルのキャッシュを消す。
# me@mac.local
$ rm -rf .ivy2/cache/*
テスト用のsbtプロジェクトを作る。
# 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
できたら、実行。
$ 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を使ってるらしい。
redbackよく知らない・・・。
軽く触ってみた感じでは新たにロールを作ったり、
既存のロールに権限を追加/削除することはできなさそう。
設定ファイルとかイジればできるのかもしれんが、とりあえずUIからはできなさそう。
あと眺めてて気づいたのはロールに親子関係がある様子。
guest
というユーザがいるので、これにRepository Manager
ロールをつければできそうな予感。
- adminでログイン
- 左側メニューのUSERSカテゴリの
Manage
からユーザ一覧を表示 -
Edit
(鉛筆のアイコン) -
Edit Roles
リンク -
internal
とsnapshots
のRepository Manager
チェックをON。
Update
。
リトライ。
# 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のどこに置いてあるのか探してみる。
# 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/
自前のプロジェクトをリポジトリに登録してみる実験もしてみなければ・・・。