web-dev-qa-db-ja.com

gitリポジトリをAndroid gradleの依存関係として宣言することはできますか?

Mavencentralのライブラリのマスターバージョンを使用したい。

GitリポジトリをAndroid gradleの依存関係として宣言することはできますか?

96
Alexey Zakharov

私にとって最良の方法は次のとおりです。

https://jitpack.io

手順1. JitPackリポジトリをリポジトリの最後にあるbuild.gradleに追加します。

repositories {
    // ...
    maven { url "https://jitpack.io" }
}

ステップ2.フォームに依存関係を追加する

dependencies {
    compile 'com.github.User:Repo:Tag'
}

たとえば、masterブランチで最新のコミットをビルドすることができます。

dependencies {
    compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
128
sunnyday

または、このようなサブモジュールとしてリポジトリを登録できます

$ git submodule add my_sub_project_git_url my-sub-project

次に、プロジェクトをsettings.gradleファイルに含めます。このファイルは次のようになります。

include ':my-app', ':my-sub-project'

最後に、次のようにアプリケーションのbuild.gradleファイルで依存関係としてプロジェクトをコンパイルします

dependencies {
  compile project(':my-sub-project')
}

次に、プロジェクトのクローンを作成するときに、オプション--recursiveを追加するだけで、gitにルートリポジトリとそのすべてのサブモジュールを自動的にクローンさせることができます。

git clone --recursive my_sub_project_git_url

役に立てば幸いです。

34
trupin

私はgradleが依存関係としてgitレポを追加することをサポートするとは思わない。私の回避策は次のとおりです。

  • メインプロジェクトがファイルシステム内の別のプロジェクトに依存していることを宣言する
  • 依存関係として宣言されたフォルダー内のgitリポジトリを自動的に複製する方法を提供します

ライブラリリポジトリをメインプロジェクトリポジトリのフォルダー外に置きたいと想定しているため、各プロジェクトは独立したgitリポジトリになり、ライブラリとメインプロジェクトのgitリポジトリに独立してコミットできます。

ライブラリプロジェクトのフォルダーをメインプロジェクトのフォルダーと同じフォルダーに配置すると仮定すると、

あなたは出来る:

最上位のsettings.gradleで、ファイルシステム内の場所を指定して、ライブラリリポジトリをプロジェクトとして宣言します

// Reference:  https://looksok.wordpress.com/2014/07/12/compile-gradle-project-with-another-project-as-a-dependency/

include ':lib_project'
project( ':lib_project' ).projectDir = new File(settingsDir, '../library' )

gradle-git plugin を使用して、gitリポジトリからライブラリを複製します

    import org.ajoberstar.gradle.git.tasks.*

    buildscript {
       repositories { mavenCentral() }
       dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
    }

    task cloneLibraryGitRepo(type: GitClone) {
            def destination = file("../library")
            uri = "https://github.com/blabla/library.git"
            destinationPath = destination
            bare = false
            enabled = !destination.exists() //to clone only once
        }

プロジェクトの依存関係で、プロジェクトのコードはgitプロジェクトのフォルダーに依存すると言います

dependencies {
    compile project(':lib_project')
}
6
GaRRaPeTa

私が見つけた最も近いものは https://github.com/bat-cha/gradle-plugin-git-dependencies ですが、Androidで動作させることができません_プラグイン。gitリポジトリがロードされた後でも、Mavenからプルしようとし続けます。

5
sgarman

Gradleには、gitからソースの依存関係を追加できる新しい機能が追加されました。

最初にsettings.gradleファイルでリポジトリを定義し、モジュール識別子にマップする必要があります。

sourceControl {
    gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
        producesModule("org.gradle.cpp-samples:utilities")
    }
}

そして今、あなたのbuild.gradleで特定のタグを指すことができます(例: 'v1.0'):

dependencies {
    ...

    implementation 'org.gradle.cpp-samples:utilities:v1.0'
}

または特定のブランチへ:

dependencies {
    ...

    implementation('org.gradle.cpp-samples:utilities') {
        version {
            branch = 'release'
        }
    }
}

警告:

  • Gradle 4.10以降が必要です
  • まだ認証をサポートしていません

参照:

1
Mister Smith