• module内包含第三方aar包,完整打包上传maven的方法


    我们在做组件化的时候经常遇到这样的场景(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

    将需要上传的aar放在libs下
    在这里插入图片描述

    配置build.gradle

    在当前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"
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    打包上传

    在这里插入图片描述
    然后会在maven中看到上传的资源:
    在这里插入图片描述

    引用

    最后在自己开发的module(SDK)中引入资源
    在这里插入图片描述
    注意:要引用其.aar类型的包

    会发现自己开发的module(SDK)上传maven后其pom如下:

    
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0modelVersion>
      <groupId>com.sdk.componentsgroupId>
      <artifactId>ArcMapartifactId>
      <version>1.1.6version>
      <packaging>aarpackaging>
      <description>更新SDK 支持不同地图控件description>
      <dependencies>
        <dependency>
          <groupId>com.sdk.componentsgroupId>
          <artifactId>godmapartifactId>
          <version>9.3.1version>
          <type>aartype>
          <scope>compilescope>
          <exclusions>
            <exclusion>
              <artifactId>*artifactId>
              <groupId>*groupId>
            exclusion>
          exclusions>
        dependency>
        <dependency>
          <groupId>androidx.appcompatgroupId>
          <artifactId>appcompatartifactId>
          <version>1.3.0version>
          <scope>compilescope>
        dependency>
        <dependency>
          <groupId>androidx.recyclerviewgroupId>
          <artifactId>recyclerviewartifactId>
          <version>1.2.1version>
          <scope>compilescope>
        dependency>
      dependencies>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    END

    如果包含多个aar也是一样,建多个java-library的module,分别上传到maven,宿主module分别重新引用

  • 相关阅读:
    历届蓝桥杯青少年编程比赛 计算思维题真题解析【已更新5套 持续更新中】
    【应用层协议】HTTPS的加密流程
    [数据结构与算法] 线性表之数组详解
    Python 遍历字典的若干方法
    LeetCode 3. 无重复字符的最长子串
    X509证书结构
    哪款TWS耳机音质比较好?音质最好的TWS耳机推荐
    基于springboot的社区流浪动物救助管理系统(前端+后端)
    Tomcat 部署优化
    2024 年,我想和这个世界聊聊
  • 原文地址:https://blog.csdn.net/luzhenyuxfcy/article/details/126241180