Nexus
ローカルで maven リポジトリを用意できるやつ
Docker
$ docker run -d -p 8081:8081 --name nexus -v $(pwd)/data:/nexus-data sonatype/nexus3
ログイン時のパスワードは自動生成されてファイルとして保存されるので /nexus-data はマウントした方が楽
$(pwd)/data/admin.password がその自動生成されたパスワード
WARN 2021-11-11
ローカルのディレクトリをマウントする方法だとエラーで起動できなかったのでボリュームを作成してマウントした方が良いかも
code:text
$ docker volume create --name nexus-data
$ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
# パスワードの確認
$ docker run --rm -v nexus-data:/nexus-data busybox cat /nexus-data/admin.password
起動後は以下からアクセスする (起動完了まではちょっと時間がかかった)
アクセス直後は未ログイン状態なので右上あたりのアイコンからログインをする必要がある
ユーザー名はデフォルトで admin
ログインすると利用するのに認証を要するかみたいな画面が出たはずで、今回は認証配下の maven repo を試したかったので要認証にした
settings.xml
リポジトリが用意できたら ~/.m2/settings.xml にリポジトリの認証情報を登録しておく
code:~/.m2/settings.xml
<settings>
<servers>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>YOUR ADMIN PASSWORD</password>
</server>
</servers>
</settings>
Deploy
簡単のために leiningen を使った
code:shell
lein new foo
cd foo
lein jar
lein pom
として target と pom.xml を生成し、pom.xml に以下を追記
code:pom.xml
<distributionManagement>
<snapshotRepository>
<id>nexus-snapshots</id>
</snapshotRepository>
</distributionManagement>
maven-snapshots はもともと用意されていたものを利用
その上で以下のコマンドでデプロイ
$ mvn clean deploy -Dmaven.test.skip=true
すると以下のようにデプロイされたことが確認できる
https://gyazo.com/bf39aa5735c7f1905701ad3544c7a8ee