如何使用根库打包子项目库

时间:2016-03-02 23:32:32

标签: android maven gradle

我有一些我在maven资源库上托管的Android库项目。所有这些库都是根库项目的子项目。我试图做到这一点,所以我的根库项目可以收集所有子项目的源和输出,作为单个库分发。

我已将根项目和子项目成功发布到maven,但是当发布根项目时,它会在打包aar时排除子项目。

结构:

Root
  \--subproject1
  \--subproject2

这是我的gradle片段:

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

configurations {
    published
}

subprojects.each { subproject -> evaluationDependsOn(subproject.path)}
task sourceJar(type: Jar) {
    dependsOn subprojects.tasks['sourceJar']
    subprojects.each { subproject ->
        from subproject.configurations.published.allArtifacts.files.collect {
            zipTree(it)
        }
    }
    classifier "sources"
}

artifactoryPublish {
    dependsOn sourceJar
}

artifacts {
    published sourceJar
}

由于dependsOn中的sourceJar,我的子项目会在此根项目的同时发布到我的maven存储库(这是我想要的并且很好)。但是,根项目在打包时不会将这些子项目作为根AAR的一部分包含在内。

如何配置我的根项目以打包其中的所有子项目?

1 个答案:

答案 0 :(得分:1)

我能够从Github使用这个库找到解决方案:
https://github.com/adwiv/android-fat-aar

该库允许您在打包最终库时嵌入子项目,如下所示(注意embedded表示法):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    embedded project(':subproject1')
    embedded project(':subproject2')
}