search
LoginSignup
18

More than 5 years have passed since last update.

posted at

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

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プラグインの良い勉強になりました(震え声)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
18