介绍
原先在使用下面的介绍方法中,实现了aar多渠道不同Flavors的代码进行打包。
Android Maven 打包不同的Flavors 的aar文件 (zinyan.com)
但是之后,不知道是否更新问题还是项目问题。我的DefaultPublishArtifact
一直无法引用。编译的时候一直出错误。
我本地的gradle
是有该库的。同时maven
相较于 maven-publish
已经是过时版本了。
想了想之后,决定放弃使用maven
了。然后发现了更简单的编译和配置。
打包不同的Flavors
例如module
的build.gradle
文件中的配置如下
productFlavors {
zin {
...
}
sdk {
...
}
}
...
apply from: 'gitlab.gradle'
因为我的所有maven库打包的结果配置是放在了gitlab.gradle
文件。
所以主要就是在gitlab.gradle
中进行配置。
apply plugin: 'maven-publish'
afterEvaluate {
publishing {
publications {
//SDK Release 版本
sdkRelease(MavenPublication) { //这个的 sdkRelease 名称是可以随意进行定义的
from components.sdkRelease //关键是这个地方的值该如何配置的问题。
groupId = 'cn.zinyan.util'
artifactId = 'xxxxx'
version = '1.0.1'
}
//SDK Dev 版本,打包数据将会进行
sdkDev(MavenPublication){
from components.sdkRelease
groupId = 'cn.zinyan.util.dev'
artifactId = 'xxxxx'
version = '1.0.1.1'
}
// Release 版本
zinRelease(MavenPublication) {
from components.zinRelease
groupId = 'cn.zinyan.util.zin'
artifactId = 'xxxx'
version = '1.0.1'
}
}
repositories {
maven {
def mavenDirPath = file('D:\\Demo')
url = "file://${mavenDirPath.absolutePath}"
}
}
}
}
我们在上面的示例中。
容易弄混的就是 from components.sdkRelease
这个在Google 的示例中写的是release
。而我上面写的是sdkRelease
为什么会这样?
那是因为components
后面跟着的数据需要是 variant
值。
就是我们的libs项目的 Active Build Variant
的值,只有这个值写对了。脚本在执行的时候才知道需要编译哪个分支的代码,并生成pom
文件等。
在上面的示例中,我添加几个打包编译的环境。
上面的配置完毕后,我们需要通过Gradle 面板执行相应的Task 进行编译aar库
配置完毕之后。我们可以将会看到一个publishing的目录下,有一长串的Task任务。
例如:
publish 就会将我publications配置下的所有版本全部打包一遍。
我们如果只想编译 sdkRelease 的版本。执行:publishSdkReleasePublicationToMavenRepository
就可以了。
由于我的需求是打包后通过git上传。到这里就结束了。
评论区