GitLab/GitHubでプライベートなMavenリポジトリを作成する
前提:パブリックなMavenリポジトリを作成する方法
公開するライブラリのMavenリポジトリを作る方法は以前に書いた。
これはGitHub PagesやGitLab Pagesでも同じような手順だ。単純にMavenのリポジトリデータ構造を作成してそれを公開してやればよい。
プライベートなMavenリポジトリは?
ところで、GitLabでは無料でもプライベートリポジトリが作成できるのだが、Pagesの方は常に公開になってしまうようだ(2019/6現在)。オープンソースの「GitLab」にはアクセスコントロールの方法があるようだが、GitLab.comではまだ使えないらしい。
したがって、GitLabでも「できあいの」プライベートなMavenリポジトリは作成できない。
これについて以下を説明してくれている方がいた。もちろん、「GitHubのPrivateリポジトリ」ということはGitHubの有料ユーザのみになる。
より簡単な方法
しかし上記の方法では、gradleプラグインを入れたり、SSHキーを作成するなど面倒なことおびただしい。実はもっと簡単な方法があったのである。
条件としては、
- チームメンバー全員がそのMavenリポジトリへの(少なくとも)読みこみ権限を与えられている
のだから、単純にローカルなリポジトリをPullで最新状態にし、それをMavenリポジトリとすれば良いのである。
ここでは、GitLabのmaven_repositoryと名付けられたプロジェクトへの読み書き権限があるとすると、以下を行えばよい。
- ローカルにこのリポジトリをクローンする。C:\maven_repositoryとでもする。
- アーティファクトを作成したらここに書き込む。Gradleでは例えば以下になる。
publishing {
publications {
target(MavenPublication) {
groupId 'groupId'
artifactId 'artifactId'
version '1.0'
from components.java
artifact sourceJar
}
}
repositories {
maven {
url 'file:///C:/maven_repository'
}
}
}
- GitLabにPushする
- 他のチームメンバーが書き込んだときのために定期的にPullする。
- ライブラリを参照したいところでは以下のように書く
repositories {
jcenter(); // 一般的なライブラリ
maven {
url 'file:///C:/maven_repository'
}
}
もしPullするのを忘れても、その時にはライブラリが引っ張ってこれないので、すぐに気がつくはずだ。
まとめ
プライベートなリポジトリに対してチーム全員が少なくとも読み込み権限のある場合は、特に「ネット上のMavenリポジトリ」を作成する必要は無い。ローカルなファイルシステム上のリポジトリで十分だ。
ディスカッション
コメント一覧
まだ、コメントがありません