Posted at

GitLabのPrivateリポジトリにAndroidライブラリをデプロイする

More than 1 year has passed since last update.

GitHubのPrivateリポジトリにAndroidライブラリをデプロイするの派生エントリです。あっちを読んでないと意味が分からない書き方をしたので、できたら読んできてください。

社内向けにライブラリを提供したい場合に、Gitリポジトリ内にMavenリポジトリなフォルダを作るのは有効な方法です。

ただし、リポジトリがPublicである必要があります。

ISMSとかそういう絡みの中で、うっかり「GitLabのプロジェクトの公開範囲は、InternalないしPrivateとする」みたいなルールを決めてしまうと、Mavenリポジトリの置き場所に困ってしまうわけですね。

そんなわけで、GitLabのPrivateなリポジトリに配置したMavenリポジトリからでも、Gradleのdependenciesにライブラリを読み込む話をします。


それは元記事と同じでは

はい。基本的には課題も解決策も前述の記事とほとんど同じなのですが、gradle-git-repo-pluginの使い方で悩んだので、メモとして残しておきます。


gradle-git-repo-pluginの設定

ひとまずこんな感じになりました。


app/build.gradle

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", "適当な名前", "ブランチ名", "フォルダ名")

というわけで、こうなります。


app/build.gradle

repositories {

git("git@local.gitlab.url:hoge/fuga.git", "anything.identifier.hoge.fuga", "master", "maven-repo")
}

"適当な名前" ってなんだよ!?となりますが、テンポラリディレクトリ(デフォルトで~/.gitRepos)の中でclone先の名前として使われるだけです。他のライブラリと被らないようにFQDNか何かにしておくとよいでしょう。


まとめ

Gradleプラグインの良い勉強になりました(震え声)