2016-03-02 84 views
2

我有幾個Android庫項目,我託管在Maven存儲庫上。所有這些庫都是根庫項目的子項目。我試圖做到這一點,因此我的根庫項目可以收集所有子項目的源和輸出以作爲單個庫進行分發。如何使用根庫打包子項目庫

我有根項目和子項目成功發佈到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 
} 

由於sourceJardependsOn,我的子項目得到在同一時間,因爲這根項目發佈到我的Maven倉庫(這是我想要的和罰款)。然而,根項目不包括這些子項目作爲包裝時根AAR的一部分。

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

回答

1

我能找到使用這個庫從GitHub的解決方案:
https://github.com/adwiv/android-fat-aar

庫將允許你包裝最終庫時,嵌入的子項目像這樣(注意embedded符號):

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

非常令人驚訝的是,使用默認的Android Gradle實現沒有簡單的方法。使用外部Gradle庫聽起來很麻煩,並且容易出錯和構建中斷。 –