В Android Gradle есть ли способ использовать локальные зависимости моментальных снимков?

Мое приложение для Android основано на Gradle, и каждый раз на его сборку уходит много времени. Это связано с количеством модулей, которые у меня есть. Даже если в подмодулях нет изменений, он продолжает пересобирать все исходники. Мне было интересно, есть ли способ преобразовать эти модули в зависимости от локальных снимков, поскольку я не часто их обновляю? Я почти уверен, что это возможно, но у меня очень базовый опыт работы с gradle и maven, поэтому я не могу найти простой способ сделать это.

В основном прямо сейчас я перечисляю свои зависимости следующим образом:

dependencies {

    compile project(':Library:lib1')
    compile project(':Library:lib2')
    compile project(':Library:lib3')
}

и я хотел бы использовать что-то вроде этого:

repositories {
    local()
}

dependencies {

    compile 'com.lib1:lib:SNAPSHOT-1.0')
    compile 'com.lib2:lib:SNAPSHOT-1.0')
    compile 'com.lib3:lib:SNAPSHOT-1.0')
}

person Romain Piel    schedule 22.10.2013    source источник
comment
Вы уверены, что ваши подпроекты перекомпилированы? Это не так с проектом, который у меня есть, хотя он объединяет ресурсы из проектов библиотеки. Я думаю, это не изменится, когда вы получите библиотеки откуда-то еще...   -  person botteaap    schedule 22.10.2013
comment
ну, я не уверен, что он перекомпилирует, но он делает что-то с модулями. запуск через командную строку намного быстрее (в конечном итоге я использую свой сценарий оболочки в качестве обходного пути для более быстрой работы). Но даже тогда он делает что-то с модулями (mergeReleaseAssets, mergeReleaseResources, processReleaseManifest и т. д.), в то время как он ничего не делает с удаленными скомпилированными зависимостями.   -  person Romain Piel    schedule 22.10.2013
comment
Что выдает Gradle? Говорит ли это UP-TO-DATE при сборке lib1? Если это так, он пропускает сборку библиотек. Частичные сборки — одна из основных функций Gradle.   -  person Grzegorz Żur    schedule 22.10.2013


Ответы (1)


Чтобы использовать локальные снимки, используйте подключаемый модуль maven-publish. Если вы используете SNAPSHOT в версии (например, 0.0.1-SNAPSHOT), вы будете публиковать снимки в своем локальном репозитории. Для build.gradle для lib1 вы должны сделать что-то вроде этого:

apply plugin: 'java'
apply plugin: 'maven-publish'

project.version=0.0.1-SNAPSHOT

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
}

и запустите цель :publishMavenPublicationToMavenLocal.

В вашем файле сборки gradle для проектов с использованием библиотеки используйте:

repositories {
    local()
}

dependencies {
    compile group: 'com.lib1', name: 'lib', version: 'SNAPSHOT-0.0.1', changing: true
}

Атрибут «изменение» указывает, что используется не кэшированная версия (обычно обновляется каждые 24 часа), а всегда проверяется наличие самой последней версии.

person OblongZebra    schedule 17.12.2013