Зависимости локального модуля с gradle

Недавно я решил переключить свой проект Android на систему сборки Gradle от ant. Ручное управление зависимостями библиотек и модулей между членами нашей команды быстро становилось слишком трудоемким.

Все началось гладко. Я создал новый проект gradle, переместил свои источники и ресурсы и избавился от всех основных сторонних библиотек .jars, которые мы висим в моей папке /libs, чтобы я мог использовать новые центральные зависимости gradle maven. Там нет проблем.

Теперь я пытаюсь найти хороший способ установить зависимости от некоторых менее популярных модулей, которых нет в центре maven. Я использую несколько небольших модулей Android (например, средство проверки формы, вспомогательный модуль и т. д.), от которых я стал зависеть. Проблема в том, что эти модули не просто .jars, но и ресурсы. Насколько я могу судить, я не могу просто поместить эти модули в свою папку /libs и заставить Gradle установить для них зависимости. Я немного почитал о файлах .aar и ищу совета о том, являются ли они ответами на мои проблемы или я упускаю из виду что-то простое. Ниже представлена ​​моя текущая структура каталогов (с некоторыми комментариями) и файл gradle.build.

структура каталогов

/<project-directory>
    /build
    /gradle
    /<application-directory>
        /build
        /src
        /libs <-- where I would expect to put non-maven modules
            /Form-Validator <-- MyApplication depends on this module
                /build.gradle
                /src
                    /java
                    /res
                    ... etc etc etc
            /Other-Module
        /build.gradle (seen below)

build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.2'
    }
}
apply plugin: 'com.android.application'

repositories {
    jcenter()
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.#####.############"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.android.support:cardview-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
    compile 'com.google.code.gson:gson:2.3.1'

    compile 'com.squareup.retrofit:retrofit:1.8.0'
    compile 'com.squareup.okio:okio:1.1.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'

    compile 'com.github.bumptech.glide:glide:3.4.0'
} 

comment
У меня такая же проблема. Какое решение вы в итоге использовали?   -  person Anakhand    schedule 27.12.2019
comment
Я не уверен - у меня больше нет доступа к репозиторию, где живет этот код. Если у вас есть свой проект в публичном репозитории и вы можете поделиться им со мной, я могу взглянуть и попытаться помочь.   -  person Steve    schedule 03.01.2020


Ответы (2)


Вы можете добавить свой локальный репозиторий maven в свой build.gradle:

repositories {
    jcenter()
    mavenCentral()
    mavenLocal()
    flatDir {
        dirs 'libs'
    }
}

Расположение локального репозитория зависит от ОС. В Linux это $HOME/.m2/repository.

person JusticeJuice    schedule 06.01.2015
comment
Меня больше всего беспокоит то, что все модули и зависимости находятся под контролем версий git, чтобы весь проект можно было клонировать из github и просто построить без создания отдельных локальных репозиториев maven на каждой машине разработчиков. Будет ли это возможно? - person Steve; 06.01.2015
comment
Я думаю, что это возможно, да. Вы можете попытаться установить домашний каталог проекта maven в каталог внутри вашей структуры каталогов git. как проект/maven/репозиторий - person JusticeJuice; 06.01.2015
comment
Спасибо. Я сделаю это и отчитаюсь! - person Steve; 06.01.2015

В настоящее время вы можете использовать JitPack.

person Gutyn    schedule 06.01.2020