前情提要
在Android开发中,有时候我们仅仅需要把库打包给自己用,也不想上传到Maven,那这个时候,把库打包到本地Maven库是一个明智的选择,一来这个库可以被多个项目同时使用,二来也很容易集成第三方依赖,不会出现普通打包AAR的情况——第三方依赖找不到了。接下来我们就来看看,怎么样打包AAR发布到本地Maven仓库。
打包发布步骤
一、新建项目
新建一个Android项目,这我就不一一解释了,我这里以一个新的安卓项目来举个例子。
二、新建一个Module
在我们刚才新建的Android项目上新建一个Module:
file
-> New
-> New Module...
在弹出来的Select a Module Type
选项框中选择Android Library
,然后确定。
点击确定后,接下来的对话框里输入Module库的名字或者可以选择性的修改module库的包名:
仅仅是演示,我这里就不做修改了,直接点击Finish
,然后等待构建完成即可完成一个Module库的创建。
三、发布到本地Maven仓库
Android下都是使用Gradle构建项目到,我们可以在Gradle构建文件里引入Maven插件,然后就可以各种使用Maven的功能了。
编辑我们刚才新建的库的gradle构建文件:
-
我们编辑
mylibrary
的bulid.gradle
构建文件,在这个文件的头部加入Maven插件apply plugin: 'maven'
,如图:
-
在
dependencies
这个节点的上面新增如下代码://填写你想把仓库放在哪个位置,我这里选择放在SDK下面 ext { ANDROID_SDK_PATH = "/Users/huan/workspace/android/sdk/extras/android/m2repository" }
可以看到注释中说明,这里是填写你想把仓库建立的位置即可,我选择的是在SDK里面。
-
在
dependencies
这个节点最底下新增如下代码://配置本地maven仓库 uploadArchives { repositories { mavenDeployer { //本地Maven库的路径,这个路径可以随意安排放在哪里 repository(url: "file://" + project.ANDROID_SDK_PATH) //包名 pom.groupId = 'mylibrary' //项目名 pom.artifactId = 'lib' //版本号 pom.version = '0.0.1' //使用的时候就可以:implementation '包名:项目名:版本号' } } }
可以看到,我们在mylibrary
的bulid.gradle
构建文件中做了三处修改,一是添加Maven插件,二是配置本地maven仓库的位置,三是配置Maven的参数。
做好修改后,我们同步一下项目(右上角有只小象,Sync Project with Gradle Files),同步好了之后,很简单的三部曲:
然后等待打包完成即可:
到此,本地Maven仓库的 打包 -> 发布
都完成了。
使用本地Maven仓库的软件包
上面是我们打包到发布的步骤,当成功发布一个Module库到本地Maven仓库后,我们可以在当前项目就使用,也可以在别的项目中使用,使用之前有两个步骤:
- 在项目的最外层bulid.gradle中引入仓库地址
- 在需要使用的模块的bulid.gradle中引入这个软件包
使用的格式是:implementation '包名:项目名:版本号'
现在我们又来新建一个项目(UseMavenDemo)
,这个项目就专门演示如何引入我们上面所发布的Module库。
在项目的最外层bulid.gradle中引入仓库地址
看图:
在图中 2 的位置添加仓库的位置即可。
在需要使用的模块的bulid.gradle中引入这个软件包
比如当前我需要在app
模块中使用这个库,那就按这个格式引入一下即可:
implementation '包名:项目名:版本号'
最后同步一下项目,引入完成,完全可以正常使用!
结束语
到此,AAR打包到本地Maven仓库的教程完毕,其实本地Maven仓库的AAR打包主要解决一个问题,就是AAR普通打包放到lib目录下使用是没有办法依赖第三方库的,比如我依赖OKhttp,如果普通的打包AAR放到lib目录下,OKhttp是不会被打进AAR的。但是如果把AAR发布到本地Maven仓库或者远程仓库,那么AAR会自动把第三方依赖也下载下来。
【demo地址】