簡體   English   中英

Android庫 - 使用Gradle將多個變體發布到本地Maven存儲庫

[英]Android Library - Publish Multiple Variants to Local Maven Repository using Gradle

我使用的是Android Gradle插件0.13.2,Android Studio 0.8.11,Gradle 2.1和maven插件。

我想用一個命令(任務)將我的Android庫的多個變體(flavor + build類型)安裝到本地Maven存儲庫。

目前Android Gradle插件0.13.2允許我將publishNonDefault標志設置為發布所有變體,但正如文檔所述,它將使用與Maven Repository不兼容的分類器發布變體。

我現在的解決方法是使用defaultPublishConfig“myVariant”並為我擁有的每個變體更改它。

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

android {
    defaultPublishConfig "myVariant"
    .
    .
    .

}

task installArchives(type: Upload) {
    repositories.mavenInstaller {
        configuration = configurations.getByName(Dependency.DEFAULT_CONFIGURATION)
        pom.groupId = "com.company"
        pom.artifactId = "mylibrary"
        pom.version = "1.0.0-myVariant"
    }
}

我想有一個任務可以正確地將所有變種發布到本地Maven存儲庫。

為了解決這個問題,我必須為每個變體創建一個上載任務,並使它們相互依賴,並依賴於啟動該過程的主任務。

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

android {
    .
    .
    .

}

// Master task that will publish all variants
def DefaultTask masterTask = project.tasks.create("installArchives", DefaultTask)

android.libraryVariants.all { variant ->
    variant.outputs.each { output ->

        // Configuration defines which artifacts will be published, create one configuration for each variant output (artifact)
        def Configuration variantConfiguration = project.configurations.create("${variant.name}Archives")
        project.artifacts.add(variantConfiguration.name, output.packageLibrary)

        // Create one Upload type task for each configuration
        def Upload variantTask = project.tasks.create("${variant.name}Install", Upload)
        variantTask.configuration = variantConfiguration
        variantTask.repositories.mavenInstaller {
            pom.groupId = "com.yourcompany"
            pom.artifactId = "yourLibrary"
            pom.version = "1.0.0-${variant.name}" //Give a different version for each variant
            pom.packaging = "aar"
        }

        // Make all tasks depend on each other and on master task
        masterTask.dependsOn variantTask
        masterTask = variantTask
    }
}

任務installArchives將所有變體發布到本地Maven存儲庫。

./gradlew installArchives

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM