如何发布具有一致版本控制的多个依赖 android 库?

How to release multiple dependent android librarys with consistent versioning?

给定一个多模块 gradle 项目,包括:

在哪里

你如何配置你的依赖项来执行 Maven 发布到 Maven 存储库(即 uploadArchives),以便所有工件(应用程序和库 A、B 和 C)都以相同的版本发布并依赖于相同的相应库的版本?

例如:

首先,依赖项如下所示

APP

compile project(':A')
compile project(':B')
compile project(':C')

B

compile project(':A')

C

compile project(':A')

这保证了当我构建项目时,所有库和应用程序都使用当前代码库进行编译。

我想做的是在 gradle.properties 中更新一个 属性,并让所有工件随该版本发布,依赖于该版本,并且仍然使用当前代码库构建(因为当前的代码库就是那个版本)

gradle.properties

PROJECT_VERSION=1.2.0

最终我希望发布的版本看起来像这样:

APP

compile ('com.my.groupid:A:1.2.0')
compile ('com.my.groupid:B:1.2.0')
compile ('com.my.groupid:C:1.2.0')

B

compile ('com.my.groupid:A:1.2.0')

C

compile ('com.my.groupid:A:1.2.0')

实现此目标的正确方法是什么?

你可以使用这样的东西。

APP

compile project(':A')
compile project(':B')
compile project(':C')

B

compile project(':A')

C

compile project(':A')

在顶层 build.gradle 使用:

ext{
    VERSION_NAME = 1.1.2
}

然后在您的更新脚本中使用:

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

                pom.groupId = GROUP
                pom.artifactId = POM_ARTIFACT_ID
                pom.version = rootProject.ext.VERSION_NAME

                //....other parts
            }
        }
    }
}

定义一个任务,如:

task uploadAllArchives {
    description 'Upload all modules to Maven Repository'
    println ''
    println '---------------------------------'
    println 'Version: ' + version
    println 'UPLOAD ALL ARCHIVES'
    println '---------------------------------'
    println ''
    doLast{
        println ''
        println '---------------------------------'
        println 'Version: ' + version
        println 'UPLOAD ALL ARCHIVES FINISHED'
        println '---------------------------------'
        println ''
    }
}
uploadAllArchives.dependsOn(
        ':libraryA:uploadArchives',
        ':libraryB:uploadArchives',
        ':libraryC:uploadArchives')