Help us understand the problem. What is going on with this article?

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

Nkzn
新潟で農業アプリとか作ってる怪しいAndroidの人
https://blog.nkzn.info
water-cell
地球人口100億の時代への農業革命をWebテクノロジで支える
https://water-cell.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした