Реализация внутренних зависимостей проекта Maven - PullRequest
0 голосов
/ 12 февраля 2019

Я создал библиотеку для использования в большинстве наших проектов.До сих пор мы использовали Github с Jitpack, но срок нашей подписки на Jitpack истек, и мы нашли альтернативный способ загрузить проект в другое место.Для этого мы используем myMavenRepo .Из этого ответа я смог загрузить проект.Однако есть проблема (у которой нет ответа на включение зависимостей самого проекта.)

Проект содержит зависимости, и когда мы добавляем этот проект в другой проект, зависимости не добавляются.Я хотел бы выяснить, как это сделать.

Вот мой код:

apply plugin: 'com.android.library'
apply plugin: 'maven-publish'

task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "sources"
}

publishing {
    publications {
        Repo(MavenPublication) {
            groupId 'com.example.repo'
            artifactId 'Repo'
            version '1.3.7'
            artifact(sourceJar)
            artifact("$buildDir/outputs/aar/repo-release.aar")
        }
    }
    repositories {
        maven {
            url "https://mymavenrepo.com/repo/repo_url/"
        }
    }
}

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 137
        versionName "1.3.7"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

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

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

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation ("com.kochava.base:tracker:3.5.0") {
        exclude group: "com.android.support"
    }
    implementation ("com.google.firebase:firebase-core:16.0.6") {
        exclude group: "com.android.support"
    }
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    // Required: Install Referrer (If publishing to Google Play)
    implementation 'com.android.installreferrer:installreferrer:1.0'

    // Optional: Instant App Status Collection
    implementation 'com.google.android.instantapps:instantapps:1.1.0'

    // Required for Flurry Analytics integration
    implementation 'com.flurry.android:analytics:11.4.0@aar'

    // Crashlytics implementation.
    implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true
    }
}

Процесс публикации сделан с ./gradlew clean build publish (я использую Ubuntu), и публикация прошла успешно.На стороне чтения репозитория мы реализуем его следующим образом (после помещения URL maven в раздел allprojects):

implementation 'com.example.repo:Repo:1.3.7'

Пока добавляется сам проект, внутреннийтакие зависимости, как Crashlytics, Flurry, Firebase Core и т. д. не добавляются.Что я должен сделать, чтобы эта библиотека также реализовала свои собственные зависимости?Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 13 февраля 2019

Все ваши зависимости объявлены в конфигурации implementation.Это означает, что они не представлены как часть API вашей библиотеки.Они не являются компиляцией временных зависимостей.

Это будет отражено в опубликованном POM Maven, где они появятся в области действия Maven runtime.И поэтому для потребителей они будут добавляться только в runtime classpath, а не в компиляцию.

Если вы хотите, чтобы зависимости вашей библиотеки были непосредственно видны в пути к классам компиляции вашегопотребители, вам нужно добавить их в конфигурацию api.Поскольку это приведет к тому, что они попадут в область действия Maven compile и будут видны для пути к классам при компиляции потребителей.

...