gpt4 book ai didi

Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:53 24 4
gpt4 key购买 nike

我正在使用 Android Gradle 插件 0.13.2、Android Studio 0.8.11、Gradle 2.1 和 maven 插件。

我想通过一个命令(任务)将我的 Android 库的多个变体( flavor + 构建类型)安装到本地 Maven 存储库。

目前 Android Gradle 插件 0.13.2 允许我设置 publishNonDefault 标志以发布所有变体,但正如文档所述,它将使用与 Maven 存储库不兼容的分类器发布变体。

我现在的解决方法是使用 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

关于Android 库 - 使用 Gradle 将多个变体发布到本地 Maven 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com