前言
在日常工作及项目迭代过程中,一定有不少同学自己写了一些框架性的东西,或者一些好用的工具,总之就是能复用的代码。然而也有不少同学为了复用这些代码不得不复制粘贴到不同项目中,这样相同的功能出现了多份代码,在后期的维护过程中带来极度不便,更新一次SDK要口口传送多次且无法按版本迭代和降级。为了解决这一系列问题,我们不妨尝试将这些代码部署到maven仓库,一处编写多处使用。
Nexus 介绍
Sonatype Nexus 是一个常见的搭建本地私有仓库的工具,详情进入官网查看https://www.sonatype.com/download-oss-sonatype
搭建私有Nexus仓库
下载 Nexus 安装包
https://www.sonatype.com/download-oss-sonatype
解压 Nexus 文件
## 启动 Nexus 服务
nexus-3.15.2-01/bin/nexus start
控制台输出如下:
初始账户:admin
初始密码:admin123
Android Lib 发布私有仓库
项目配置
在项目根目录下 gradle.properties 中添加配置:
仓库地址如下:
# Maven仓库的URL
MAVEN_REPO_RELEASE_URL=http://localhost:8081/repository/maven-releases/
# 对应maven的GroupId的值
GROUP=maven-releases
# 登录nexus ossde的用户名
NEXUS_USERNAME=admin
#登录nexus oss的密码
NEXUS_PASSWORD=admin123
# groupid
GROUP_ID=cn.soulapp.android
# type
TYPE=aar
# description
DESCRIPTION=Soul Pay SDK By Android ~
在lib的build.gradle中添加:
// 添加maven依赖
apply plugin: 'maven'
...
// 配置上传指令
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '1.0.3'
artifactId 'AndroidPaySDK'
groupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}
上传 library
执行指令:
./gradlew uploadArchives
等待发布成功~
使用 library
在根目录 build.gradle 加入
buildscript {
repositories {
google()
jcenter()
// 配置私有仓库地址
maven {
url 'http://localhost:8081/repository/SoulApp/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
}
}
allprojects {
repositories {
google()
jcenter()
maven {
url 'http://localhost:8081/repository/SoulApp/'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
在依赖此 library 项目中引用
api 'cn.soulapp.android:AndroidPaySDK:1.0.3@aar'
结语
至此,基于 Nexus 搭建私有 Maven 仓库已完成,祝您工作愉快~