GitHubのPrivateリポジトリにAndroidライブラリをデプロイするの派生エントリです。あっちを読んでないと意味が分からない書き方をしたので、できたら読んできてください。
社内向けにライブラリを提供したい場合に、Gitリポジトリ内にMavenリポジトリなフォルダを作るのは有効な方法です。
ただし、リポジトリがPublicである必要があります。
ISMSとかそういう絡みの中で、うっかり「GitLabのプロジェクトの公開範囲は、InternalないしPrivateとする」みたいなルールを決めてしまうと、Mavenリポジトリの置き場所に困ってしまうわけですね。
そんなわけで、GitLabのPrivateなリポジトリに配置したMavenリポジトリからでも、Gradleのdependenciesにライブラリを読み込む話をします。
それは元記事と同じでは
はい。基本的には課題も解決策も前述の記事とほとんど同じなのですが、gradle-git-repo-pluginの使い方で悩んだので、メモとして残しておきます。
gradle-git-repo-pluginの設定
ひとまずこんな感じになりました。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.layer:gradle-git-repo-plugin:2.0.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'git-repo'
repositories {
git("git@local.gitlab.url:hoge/fuga.git", "anything.identifier.hoge.fuga", "master", "maven-repo")
}
github()
関数が使えるパターンと違って、git()
関数の何番目にどのパラメータを入れればいいのか、だいぶ悩まされました。
内部実装でいうと、このへん↓です。
project.repositories.metaClass.git = { String gitUrl, String name, String branch = "master", String type = "releases", def closure = null ->
def orgDir = repositoryDir(project, name)
addLocalRepo(project, ensureLocalRepo(project, orgDir, name, gitUrl, branch), type)
}
github版と読み比べたところ、次のようにすればいいことがわかりました。
git("GitLabの普通のclone用URL", "適当な名前", "ブランチ名", "フォルダ名")
というわけで、こうなります。
repositories {
git("git@local.gitlab.url:hoge/fuga.git", "anything.identifier.hoge.fuga", "master", "maven-repo")
}
"適当な名前"
ってなんだよ!?となりますが、テンポラリディレクトリ(デフォルトで~/.gitRepos
)の中でclone先の名前として使われるだけです。他のライブラリと被らないようにFQDNか何かにしておくとよいでしょう。
まとめ
Gradleプラグインの良い勉強になりました(震え声)