Подтвердить что ты не робот

Можно ли объявить репозиторий git как зависимость в android gradle?

Я хочу использовать главную версию моего lib из mavencentral.

Можно ли объявить репозиторий git как зависимость в android gradle?

4b9b3361

Ответ 1

Для меня лучший способ это:

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' }

Ответ 2

Или вы можете зарегистрировать репозиторий как подмодуль, подобный этому

$ 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

Надеюсь, это поможет.

Ответ 3

Я не думаю, что 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 для клонирования библиотеки из репозитория 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')
}

Ответ 4

Самая близкая вещь, которую я нашел, - https://github.com/bat-cha/gradle-plugin-git-dependencies, но я не могу заставить ее работать с плагином Android, продолжает пытаться вытащить от maven даже после загрузки репозиториев git.

Ответ 5

Теперь в 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 или выше
  • Пока не поддерживает аутентификацию

Рекомендации: