如何在库(sdk)中指定具有多个模块

时间:2016-09-26 11:24:24

标签: android dependencies build.gradle

我有一个包含多个模块的库项目,因此我将其依赖项集中在项目级 build.gradle ,如下所示

ext {
    compileSdkVersion = 23
    minSdkVersion = 9
    targetSdkVersion = 24
    buildToolsVersion = '23.0.3'
    junit = 'junit:junit:4.12'
    mockito = 'org.mockito:mockito-core:1.10.19'
    testRunner = 'com.android.support.test:runner:0.5'
    appcompat = 'com.android.support:appcompat-v7:24.1.0'
    retrofit2 = 'com.squareup.retrofit2:retrofit:2.1.0'
    gsonConverter = 'com.squareup.retrofit2:converter-gson:2.1.0'
    httpLogInterceptor = 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    design = 'com.android.support:design:24.1.0'
    cardview = 'com.android.support:cardview-v7:24.1.1'
    universalImageLoader = 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
}

我在模块中使用它

dependencies {
    compile project(':module1')
    compile rootProject.appcompat
    compile rootProject.retrofit2
    compile rootProject.gsonConverter
    compile rootProject.httpLogInterceptor
    compile rootProject.design
    compile rootProject.cardview
    compile rootProject.universalImageLoader
    testCompile rootProject.junit
    testCompile rootProject.mockito
    androidTestCompile rootProject.junit
    androidTestCompile rootProject.testRunner
}

在我的示例应用程序(同一项目中的另一个模块)中,我将库模块包含为compile project(':module2')&它工作正常,但现在我发布了jcenter& amp; sdk如果我在一个新的应用程序中使用它,我在库中提到的依赖关系不会解决。

我尝试包含依赖性,如

compile ('com.github.xxx:module2:1.0.0@aar') {
    transitive=true
}

compile 'com.github.xxx:module2:1.0.0'

compile ('com.github.xxx:module2:1.0.0') {
    transitive=true
}

我试过了

How to specify dependencies in aar library?

Can an AAR include transitive dependencies?

如果我错过了任何信息,请发表评论

提前致谢

1 个答案:

答案 0 :(得分:2)

回答我自己的问题,这对任何人都有用。感谢@Gabriele Mariotti, 我检查了生成的pom,因为没有依赖标记可用,所以搜索和&找到了snippet来添加它。

但是他们在publications中添加了它,在我的情况下,一个模块依赖于另一个尚未发布的模块,该模块2的 build.gradle 中的相关性为{{ 1}}并生成新的pom,它不包含publication文件夹中的名称,描述等标签。

所以我将它添加到之前的pom字段创建区域&它对我有用

以下是 gradle-mvn-push.gradle的更新部分

complie project(':module1')