【问题标题】:How to package subproject libraries with root library如何用根库打包子项目库
【发布时间】:2016-03-02 23:32:32
【问题描述】:

我有几个 Android 库项目托管在 maven 存储库上。所有这些库都是根库项目的子项目。我正在尝试这样做,以便我的根库项目可以收集所有子项目的源和输出,以作为单个库分发。

我已经成功发布了根项目和子项目到maven,但是当根项目发布时,打包aar时不包括子项目。

结构:

Root
  \--subproject1
  \--subproject2

这是我的 gradle sn-p:

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
}

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

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

【问题讨论】:

    标签: android maven gradle


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常令人惊讶的是,使用默认的 Android Gradle 实现没有简单的方法来做到这一点。使用外部 Gradle 库听起来很麻烦,而且容易出错和构建中断。
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多