本教程为Android发布library到本地 maven服务器的过程
在公司内部有多个项目同时开发,但是有些功能在每个项目里面都有的,例如网络加载、图片加载等等,这些基础库一旦改变则每个项目都要改。所以可以通过单独创建一个项目,把这些通用的功能集中起来,发布到本地仓库,最后在实际项目中通过gradle依赖的形式即可完成功能的添加。这样更加方便修改和管理。
- 这里我们使用Nexus 来做本地仓库的搭建
- 到官网下载安装包https://www.sonatype.com/download-oss-sonatype
- 如果不能翻墙 百度云盘
- 解压下载下来的包
- 定位到 ..\nexus-2.14.2-01-bundle\nexus-2.14.2-01\bin\jsw\windows-x86-64 下 (如果是32位请到另外一个文件夹windows-x86-32)
- 直接双击console-nexus.bat 过一会
- 打开浏览器 进入改地址 http://127.0.0.1:8081/nexus/#welcome 如果能显示该界面表示你已经搭建成功
- 在右上角点击Log in 输入默认的账号密码
username: admin
password: admin123
- 点击左边导航栏Repositories到仓库界面,点击add操作生成一个type为hosted的文件夹 该文件夹为android,对应后面android项目内添加依赖时要用到
-
打开Android studio创建一个Android项目,作为测试library的项目
-
在module下的build.gradle文件中加入以下代码
.... apply plugin: 'maven' uploadArchives { configuration = configurations.archives repositories { mavenDeployer { snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } repository(url: MAVEN_REPO_RELEASE_URL) { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { version VERSION artifactId MUDULE_NAME groupId GROUP_ID packaging TYPE description DESCRIPTION } } } } artifacts { archives file('coremodule.aar') }
注意:coremodule.aar 请在build好项目后在
your module >build>outputs>aar 找到该文件名,该文件即为上传到maven仓库的aar文件
-
在项目根目录下gradle.properties文件中加入下列代码 用于做maven仓库的配置
# 配置本地maven库参数 # 该路径每个module都通用,Android项目都上传到该路径下 MAVEN_REPO_RELEASE_URL=http://127.0.0.1:8081/nexus/content/repositories/android/ # 上传快照路径,便于maven做管理用 MAVEN_REPO_SNAPSHOT_URL=http://127.0.0.1:8081/nexus/content/repositories/snapshots/ #对应maven的GroupId的值 可以不填 GROUP = android #登录nexus ossde的用户名 NEXUS_USERNAME=admin #登录nexus oss的密码 NEXUS_PASSWORD=admin123 # groupid 上传maven会在对应的仓库目录下创建一个以改值命名的文件夹,最好是module名 GROUP_ID = common # type TYPE = aar # description 对该module的描述 DESCRIPTION = android 基础库 # module的版本号 不用写分号 VERSION = 1.0.0 # 依赖包的包名 MUDULE_NAME core-module-lib
-
编写好module的代码后,Rebuild Project
-
执行上传操作,发布library
-
发布成功
-
在项目根目录的build.gradle文件中加入下面的代码
allprojects { repositories { .... maven{ url 'http://127.0.0.1:8081/nexus/content/repositories/android/'} } }
-
在app目录下的build.gradle中加入下面的配置
compile 'common:core-module-lib:1.0.0'