利用nexus搭建Android的maven私服

来源:互联网 发布:淘宝网详情页图片尺寸 编辑:程序博客网 时间:2024/06/09 13:59

前言

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.0GROUP_ID=com.maven.studo.libraryARTIFACT_ID=testRELEASE_URL=http://127.0.0.1:8081/repository/android-host/SNAPSHOT_URL=http://127.0.0.1:8081/repository/android-host/NAME=cytusPASSWORD=123123123

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

新建上传脚本maven_push.gradle

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

apply plugin: 'maven'apply plugin: 'signing'configurations {    deployerJars}repositories {    mavenCentral()}// 判断版本是Release or Snapshotsdef isReleaseBuild() {    return !VERSION.contains("SNAPSHOT");}// 获取仓库urldef 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私服已经大功告成!

原创粉丝点击