利用nexus搭建Android的maven私服

前言

maven是一个构建和管理项目的工具,做java的同学肯定不陌生,在Android中,默认采用的是gradle进行的构建,实际上很多gradle上的三方库也是放在maven仓库的。

在日常的android开发中,随着项目的日益增大,编译越来越慢,代码间的耦合越来越紧,相互之间的影响越来越大,而我们又不想将自己的代码放到jcenter等公开的仓库,这时候我们可以利用maven私服,将一部分代码抽成二方库和三方库,这样方便项目集成和管理。

想要上传二方库到maven,首先我们需要有一个自己的maven私服,如果公司已经有maven仓库了,大家可以直接跳到第二部分。

搭建私服

这里我们采用nexus3.X搭建自己的maven仓库。
nexus下载地址:https://www.sonatype.com/download-oss-sonatype

可供下载的平台

我这里的本地环境是win10,所以以windows为例,大家选择对应的版本即可。

解压压缩包,可以发现压缩包中有两个文件夹:nexus-3.5.1-02sonatype-work,利用命令行cd到nexus-3.5.1-02目录下的bin文件夹,与2.X版本不同,3.X版本简化了启动步骤,其中nexus.exe就是我们需要的启动入口,输入命令.\nexus.exe /run,即可启动服务,如果启动成功的话,应该会显示这样:

这里写图片描述

这里需要主意,nexus需要oracle的JDK,openjdk是不行的,而且nexus.exe无法通过双击,或者右键管理员身份运行等方式打开。

启动成功以后,我们可以通过链接:
http://localhost:8081 访问到我们启动好的仓库。这里8081的端口可能会被占用,我们可以通过修改nexus的默认端口来修复。

界面如下:
这里写图片描述

点击右上角的登陆按钮,默认的登陆账号和密码是admin, admin123,然后点击配置页面的users,为我们android的上传新建一个用户。

这里写图片描述

创建用户信息,大致如图所示:

这里写图片描述

这里注意一下status 和 granted权限。创建成功以后,我们即可使用新建的用户进行登陆。

紧接着,我们创建自己的respository,点击
这里写图片描述

由于我们是自己内部使用,所以选择maven2(hosted)即可,基本配置如下图即可:

这里写图片描述

创建成功以后,我们即可在components找到自己的创建的仓库了。

这里写图片描述

至此,我们的仓库已经创建完毕!(这里以我之前的andorid-host为例)

android上传

我们为了将代码抽成二方库和三方库,建议单独将这些抽离的代码作为一个工程进行开发,这样可以尽量减少对原工程的依赖。

我们新建一个工程,然后在工程目录下新建一个android library.
这里写图片描述

这里写图片描述

接下来,我们准备gradle脚本,进行上传:

新建gradle.properties配置文件

在library下,新建gradle.properties文件,主要存放一些我们的配置项:

VERSION=1.0
GROUP_ID=com.maven.studo.library
ARTIFACT_ID=test

RELEASE_URL=http://127.0.0.1:8081/repository/android-host/
SNAPSHOT_URL=http://127.0.0.1:8081/repository/android-host/

NAME=cytus
PASSWORD=123123123

修改内容为自己新建仓库和用户时的信息。

新建上传脚本maven_push.gradle

在library下,新建上传脚本:maven_push.gradle
脚本内容如下:

apply plugin: 'maven'
apply plugin: 'signing'

configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

// 判断版本是Release or Snapshots
def isReleaseBuild() {
    return !VERSION.contains("SNAPSHOT");
}

// 获取仓库url
def getRepositoryUrl() {
    return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL;
}

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }

            pom.version = VERSION
            pom.artifactId = ARTIFACT_ID
            pom.groupId = GROUP_ID

            repository(url: getRepositoryUrl()) {
                authentication(userName: NAME, password: PASSWORD) // maven授权信息
            }
        }
    }
}

// 进行数字签名
signing {
    // 当 发布版本 & 存在"uploadArchives"任务时,才执行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

然后将改脚本导入library的构建过程:
在library下的build.gradle中,在

apply plugin: 'com.android.library'

下加入一行:

apply from: 'maven_push.gradle'
上传

sync一下,然后你就会在这里发现多了一个上传的选项,

这里写图片描述

双击运行即可。
上传成功之后,就可以在你建立的仓库里看到上传的文件了:

这里写图片描述

项目依赖

项目依赖就比较简单了,我们在项目根目录下的build.gradle文件中添加我们的仓库:

这里写图片描述

然后就像依赖普通三方库一样,在app的build.gradle下添加依赖:

compile 'com.maven.studo.library:test:1.0'

sync一下,就可以发现,我们已经依赖到了我们在仓库的代码了!

这里写图片描述

至此,我们的maven私服已经大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值