
场景:默认情况下依赖本地Module,发布Maven时使用Maven依赖及特定的版本号
一、确定控制变量
如:uploadMaven 代表发布Maven
使用下面的指令的编译:
./gradlew :bigclass:assembleRelease --stacktrace -PuploadMaven=true
完整的发布脚本如下(不包含Maven配置哦):
#!/usr/bin/env bash
./gradlew clean --stacktrace -PuploadMaven=true
# upload to Nexus3
#./gradlew :bigclass:uploadArchives
# upload to Artifactory
./gradlew :bigclass:assembleRelease --stacktrace -PuploadMaven=true
./gradlew :bigclass:generatePomFileForAarPublication --stacktrace -PuploadMaven=true
./gradlew :bigclass:artifactoryPublish --stacktrace -PuploadMaven=true
ok,后面发布Maven的编译就使用上面的指令或脚本就行了,本质是Gradle命令携带 uploadMaven 参数
二、配置Gradle全局变量
在项目根目录的 build.gradle 中配置全局变量: isUploadMaven、publishVersion
def uploadMavenValue = project.hasProperty('uploadMaven') ? uploadMaven : "false"
ext {
isUploadMaven = "$uploadMavenValue"
publishVersion = "4.8.148"
}
∆ 题外话
当然如过你在项目中使用了常规的版本管理Gradle脚本(version.cfg、version-manager.gradle)也可以直接使用已存在的全局版本号变量:configVersionName 来代替 publishVersion

ok,后面所有Module的gradle中都可以使用 isUploadMaven、publishVersion 来管理依赖配置了。
三、根据全局变量来配置依赖
在Module的build.gradle中配置依赖吧:
dependencies {
implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:design:26.0.2'
if ("${rootProject.ext.isUploadMaven}" == ("false")) {
api project(':baselib.commLib')
implementation project(':baselib.baseLib')
implementation project(':lib.cloudRoom')
implementation project(':lib.cloudRoomBase')
} else {
api "com.yimi.room.sdk:commLib:${rootProject.ext.publishVersion}"
implementation "com.yimi.room.sdk:baseLib${rootProject.ext.publishVersion}"
implementation "com.yimi.room.sdk:cloudRoom:${rootProject.ext.publishVersion}"
implementation "com.yimi.room.sdk:cloudRoomBase:${rootProject.ext.publishVersion}"
}
}
or:
dependencies {
implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:design:26.0.2'
if ("${rootProject.ext.isUploadMaven}" == ("false")) {
api project(':baselib.commLib')
implementation project(':baselib.baseLib')
implementation project(':lib.cloudRoom')
implementation project(':lib.cloudRoomBase')
} else {
api "com.yimi.room.sdk:commLib:$configVersionName"
implementation "com.yimi.room.sdk:baseLib:$configVersionName"
implementation "com.yimi.room.sdk:cloudRoom:$configVersionName"
implementation "com.yimi.room.sdk:cloudRoomBase:$configVersionName"
}
}