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

标签 android gradle android-gradle-plugin android-library

给定一个包含以下内容的多模块 gradle 项目:

  • 应用
  • 图书馆A
  • 图书馆B
  • 图书馆C

在哪里

  • 应用程序依赖于 A、B、C
  • B 依赖于 A
  • C 依赖于 A
  • A没有依赖

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

例如:

首先,依赖关系如下所示

应用

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

B

compile project(':A')

C

compile project(':A')

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

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

gradle.properties

PROJECT_VERSION=1.2.0

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

应用

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')

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

最佳答案

你可以使用这样的东西。

应用

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')

关于android - 如何以一致的版本控制发布多个依赖的android库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32909285/

相关文章:

android - 在一个 ScrollView 中实现内容和评论的最佳方式是什么

Gradle 错误configurations.add 字符串无法转换为配置

android-studio - Gradle构建工具版本在哪里设置?

android - 无法实例化接收器,java.lang.IllegalAccessException : access to class not allowed

android - 在两个不同的 Activity 中使用 AChartEngine 图显示线性布局

java - Android Studio 错误无法识别的窗口套接字

android - Android Studio如何打包来自多个库项目的单个AAR?

Android Studio 启用 Java8 支持

java - 所有com.android.support库必须使用完全相同的版本规范Android Studio 3.0.1

java - 我需要自己的服务器才能使用 Stripe API 吗?