当前位置: 首页 > news >正文

如何将安卓 Gradle 模块打包发布到本地 Maven 仓库

文章目录

  • 具体流程

笔者的运行环境:

  • Android Studio Flamingo | 2022.2.1

  • Android SDK 33

  • Gradle 8.0.1

  • JDK 17

  Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle 项目适用的方法,对 Android 项目是不适用的。

  因为普通 Gradle 项目打包生成的是 JAR 包,而 Android 项目打包生成的是 AAR 包。不过说到底,AAR 包和 JAR 包一样,也就是一种压缩包。只不过,AAR 包是在 JAR 包的基础之上的二次压缩。具体来说,AAR 包是将源码编译生成的 JAR 包再和安卓的清单文件放在一起又制成了一个新的压缩包。

  不过,也就是这点区别导致了它们关于发布到 Maven 仓库的流程有些不同。

具体流程

  1. 首先,需要先安装 Maven,否则 Gradle 将无法感知本地 Maven 仓库的位置。关于这方面的内容,可见笔者的另一篇博客:

    Maven 的下载安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/112689500

  2. 这里以安卓打包发布到本地 Maven 仓库的流程为例,并假设读者使用的是一种 Gradle 多模块项目。这里演示的是将其中的一个模块打包发布到本地的 Maven 仓库。

  3. 在需要打包发布到本地 Maven 仓库的那个模块的 build.gradle 中,添加如下代码。

    plugins {id 'maven-publish'
    }task sourceJar(type: Jar) {from android.sourceSets.main.java.srcDirsarchiveClassifier = "sources"
    }publishing {publications {maven(MavenPublication) {groupId = 'Maven 模块的 groupId'artifactId = 'Maven 模块的 artifactId'version = 'Maven 模块的 version'// 上传 AAR 包afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }// 向 Maven 仓库中上传源码artifact sourceJar}}
    }
    

    其中,读者需要将上述代码中的 groupId、artifactId、version 改成实际的值。


    【提示】

      有人可能会使用如下额外的配置:

    publishing {// ...省略其它内容...repositories {maven {url = "http://my.org/repo"}}
    }
    

      此配置是将 Gradle 模块发送到 Maven 网络仓库上时才需要设置的。对本文来说,这是不必要的。


  4. 在 Android 上的 Gradle 面板中点击 publishToMavenLocal 即可完成发布。

    在这里插入图片描述


    【踩坑提醒】

      有的读者可能会遇到 Gradle 面板没有 publishToMavenLocal 这一选项的问题。关于这方面的内容,可见笔者的另一篇博客:

      解决 Android Studio 的 Gradle 面板上只有关于测试的 task 的问题:
    https://blog.csdn.net/wangpaiblog/article/details/132124402


  5. 发布到本地 Maven 仓库成功之后,Gradle 会在 Maven 仓库在相应位置创建三个文件:

    • artifactId-version.aar

    • artifactId-version.pom

    • artifactId-version-sources.jar

  6. 然后,在 Gradle 项目中的根模块中的 settings.gradle 添加如下代码来引入本地 Maven 仓库。这样 Gradle 在解析依赖时就会额外去本地 Maven 仓库中寻找。

    dependencyResolutionManagement {repositories {mavenLocal()}
    }
    
  7. 现在,在 Gradle 项目中就可以像其它依赖一样使用 implementation 来引用刚发布到本地 Maven 仓库的依赖了。

http://www.lryc.cn/news/113370.html

相关文章:

  • 【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解
  • java.lang.IllegalArgumentException: Invalid character found in methodname
  • 【PCB专题】Allegro高速电路Xnet网络等长约束——SDIO信号为例
  • leetcode每日一练-第278题-第一个错误的版本
  • 最小生成树笔记(Prim算法Kruskal算法)
  • 4、数据清洗
  • Python-OpenCV 图像的基础操作
  • test111
  • 17. Spring 事务
  • 【C# 基础精讲】运算符和表达式
  • 【搜索】DFS连通性模型
  • 项目优化后续 ,手撸一个精简版VUE项目框架!
  • 【深度学习笔记】TensorFlow 基础
  • 面试题-springcloud中的负载均衡是如何实现的?
  • flink的ProcessWindowFunction函数的三种状态
  • day50-springboot+ajax分页
  • Win7 专业版Windows time w32time服务电脑重启后老是已停止
  • 全网最强,接口自动化测试-token登录关联实战总结(超详细)
  • OLAP ModelKit Crack,ADO.NET和IList
  • 4 三组例子,用OpenCV玩转图像-AI-python
  • 计算机网络-三种交换方式
  • 03 制作Ubuntu启动盘
  • 【JavaSE】String类中常用的字符串方法(超全)
  • Bootload U-Boot分析
  • 以公益之行,筑责任之心——2023年中创算力爱心公益助学活动
  • 【机器学习】处理样本不平衡的问题
  • Android前沿技术?Jetpack如何?
  • 为react项目添加开发/提交规范(前端工程化、eslint、prettier、husky、commitlint、stylelint)
  • 小研究 - MySQL 数据库安全加固技术的研究(一)
  • linux安装redis带图详细