我们在做组件化的时候经常遇到这样的场景(maven私有化默认您已经了解或者搭建完成):
我们有一个自己开发维护的Android Module(SDK)内部引用了一个(多个)第三方的aar,当我们打包自己的SDK并上传maven时,引用的aar并不会打包到最终的aar里。
思路是将aar先打包上传至maven,然后自己的module去引用,然后最终打包,我们自己的SDK中的pom.xml就会引用依赖的三方maven地址
本案例使用的是:android studio chipmunk 版本,其他版本入口展示可能不同
新建库项目在android studio中新建 java-library 类型的 module
将需要上传的aar放在libs下
在当前module的build.gradle文件中做类似如下处理
plugins { id 'java-library' } java { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } //上传到maven apply plugin: 'maven' //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!下面AAR的文件名改成你放到libs文件夹里的文件名 def coreAarFile = file('libs/AMap3DMap_9.3.1_AMapSearch_9.3.1_AMapLocation_6.1.0_20220704.aar') artifacts { archives coreAarFile } uploadArchives { repositories { mavenDeployer { //!!!!!!!!!!!!!!!!!!!!!!!!!!这里配置上传到maven仓库后的 groupId、artifactId、version repository(url: "http://172.17.230.145:8081/artifactory/libs-release-local/") pom.version = "9.3.1" pom.artifactId = "godmap" pom.groupId = "com.sdk.components" pom.packaging = "aar" } } }打包上传
然后会在maven中看到上传的资源:
最后在自己开发的module(SDK)中引入资源
注意:要引用其.aar类型的包
会发现自己开发的module(SDK)上传maven后其pom如下:
END4.0.0 com.sdk.components ArcMap 1.1.6 aar 更新SDK 支持不同地图控件 com.sdk.components godmap 9.3.1 aar compile * * androidx.appcompat appcompat 1.3.0 compile androidx.recyclerview recyclerview 1.2.1 compile
如果包含多个aar也是一样,建多个java-library的module,分别上传到maven,宿主module分别重新引用