Android 搭建私有maven仓库及上传项目

Java基础

浏览数:400

2019-8-21

前言

在日常工作及项目迭代过程中,一定有不少同学自己写了一些框架性的东西,或者一些好用的工具,总之就是能复用的代码。然而也有不少同学为了复用这些代码不得不复制粘贴到不同项目中,这样相同的功能出现了多份代码,在后期的维护过程中带来极度不便,更新一次SDK要口口传送多次且无法按版本迭代和降级。为了解决这一系列问题,我们不妨尝试将这些代码部署到maven仓库,一处编写多处使用。

Nexus 介绍

Sonatype Nexus 是一个常见的搭建本地私有仓库的工具,详情进入官网查看https://www.sonatype.com/download-oss-sonatype

搭建私有Nexus仓库

下载 Nexus 安装包

https://www.sonatype.com/download-oss-sonatype

下载 Nexus

解压 Nexus 文件

安装 Nexus

## 启动 Nexus 服务

nexus-3.15.2-01/bin/nexus start

控制台输出如下:

启动 Nexus 服务 到此 Nexus 服务已经启动,访问
http://localhost:8081 即可访问 Nexus 私服,

初始账户:admin
初始密码:admin123

Nexus 服务器

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 仓库已完成,祝您工作愉快~

作者:王永迪