原文发于微信公众号 jzman-blog,欢迎关注交流。

前面几篇文章学习了 Gradle 相关知识,Gradle 系列文章如下:

今天的内容是使用 Nexus Repository Manager 搭建 Maven 私服库,这样可以将一些通用的库项目提取出来供其他项目使用,如工具库、基本组件库等,下面将从零开始搭建 Maven 私服库,

  1. 安装Nexus服务
  2. 运行Nexus服务
  3. 发布库项目
  4. 使用库项目
  5. 总结

安装Nexus服务

在如下地址下载 Nexus 安装包:

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

选择适合自己的版本进行下载,如这里选择的是 nexus-3.13.0-01-win64,下载完成之后解压,有两个文件夹如下:

//nexus服务
nexus-3.13.0-01
//nexus相关配置文件,如日志、仓库、索引、缓存等配置文件
sonatype-work

然后打开 cmd 命令提示符以管理员方法运行,进入 Nexus 服务解压目录下的 bin 目录下执行如下命令来安装 Nexus 服务,参考如下:

nexus.exe/install

执行完成后 Nexus 服务就安装完成了,安装 Nexus 服务成功执行结果参考如下:

E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/install
Installed service 'nexus'.

运行Nexus服务

安装完成 Nexus 服务之后执行如下命令来运行 Nexus 服务,参考如下:

nexus.exe/run

执行该命令会启动 Nexus 服务,执行成功的关键信息如下:


E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/run
Preparing JRE ...
2018-09-10 23:02:21,265+0800 INFO [FelixStartLevel] *SYSTEM org.sonatype.nexus.pax.logging.NexusLogActivator - start
//...
------------------------------------------------- Started Sonatype Nexus OSS 3.13.0-01 -------------------------------------------------
//...

当 Nexus 服务正常启动之后,可使用如下地址访问 Nexus 服务,具体如下:

http://localhost:8081/

运行结果如下所示:

创建仓库

使用默认账户名 admin 和默认密码 admin123 登录成功之后,然后选择设置(小齿轮),在左侧选择 Security->Users,然后选择创建用户 Create local user 输入相关信息账号创建完成,然后使用刚才创建的新账号登录,然后就可以在自己的账号下面创建仓库了,可参考下图:

发布库项目

仓库创建好了之后就可以发布项目到仓库中了,这里首先使用 Android Studio 创建一个库项目 test,然后在其 build.gradle 文件中配置上传该库的 Task,看一下该库使用的插件:

//使用Android Library插件
apply plugin: 'com.android.library'
//使用maven插件
apply plugin: 'maven' //Upload Task用于发布上传
uploadArchives{
repositories{
mavenDeployer{
//正式发布仓库
// repository(url:"http://localhost:8081/repository/jzman-releases/"){
// authentication(userName:"jzman",password:"nexus2410.")
// }
//快照版本的仓库
snapshotRepository(url:"http://localhost:8081/repository/jzman-snapshots/"){
authentication(userName:"jzman",password:"nexus2410.")
} pom.project {
//版本号,如果是快照版本,其版本号后面应该添加-SNAPSHOT,否则不能正常识别上传
version '1.0.0-SNAPSHOT'
//一般写项目名称即可
artifactId 'testWidget'
//组别,类似包名,保证唯一性
groupId 'com.manu.test'
//打包格式
packaging 'aar'
//描述
description '测试maven私服搭建'
}
}
}
}
//...

配置完用于上传库项目的 task 之后,就可以根据需要上传到之前创建的对应仓库中了,执行上传 task 可使用 Android Gradle 提供的快捷方式,如下图所示:

等待 uploadArchives 执行完毕后对应的库项目就发布到对应的仓库了,下面是发布到了正式仓库,如下图所示:

正式版发布每次必须的更改版本号,否则不能发布成功,下面是发布到了快照仓库,如下图所示:

如果将库项目发布到快照仓库中,可以多次上传发布,每次不需要修改版本号,它会自己维持在原来版本号的基础上自增,如 1.0.0-时间戳-1、1.0.0-时间戳-2等,实际使用时还是用版本号 1.0.0-SNAPSHOT,使用时 Maven 会自动下载最新的快照版本,也就是序号最大的快照版本,这种方式便于将库项目发现的问题及时发布上去,有助于快速迭代,等到没有问题就可以发布正式版本了。

使用库项目

库项目是发布成功之后,就可以在任意的项目中使用这个库项目了,在项目下的 build.gradle 文件中配置项目使用的 Maven 仓库:

//...

allprojects {
repositories {
//...
//配置maven仓库
maven {
url 'http://localhost:8081/repository/jzman-releases/'
}
}
} //...

然后,在具体的项目中就可以配置对应依赖就可以使用这个库项目了,配置依赖如下:

dependencies {
//...
//配置依赖库项目
compile 'com.manu.test:testWidget:1.0.0'
}

总结

本篇文章的主要内容就是在本地搭建一个可用的 Maven 私服库,实际开发中只需根据上述内容将对应的仓库地址更换为自己公司的仓库地址即可,其他如 jcenter 库的搭建也类似,这篇文章的内容就到此为止。

Gradle系列之从零搭建Maven私服库的更多相关文章

  1. Anroid 搭建Maven私服(Android Studio)

    一.场景 ① 公司中有多个项目,多人开发,开发中的某一模块需要被其他几个项目的模块所依赖,最简单粗暴的方式就是打包成aar或者jar文件逐个拷贝到libs下进行依赖,可是这种方式太过于麻烦,而且需要每 ...

  2. 搭建Maven私服

    最近从SVN下载的代码,在本地构建时出现了诸多问题,部分依赖下载超时,就想起在局域网搭建Maven私服,废话不说了,在测试服务器上建的已经成功,就随便找台机子再练习一遍顺道写个日志.1.前往http: ...

  3. Maven学习 (四) 使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  4. Maven-004-使用 Nexus 搭建 maven 私服

    从去年至今,自己一直在学习自动化测试工具,想利用自动化工具尽可能的将重复的.关键的.耗时耗力的工作实现自动化,减轻日常测试工作,提升测试效率.在学习的过程中,将 maven 作为了项目开发管理工具,进 ...

  5. Ubuntu server下搭建Maven私服Nexus

    Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...

  6. Maven使用笔记(五)Sonatype Nexus 搭建Maven 私服

    1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地, 而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载 ...

  7. Maven——使用Nexus搭建Maven私服

    原文:http://www.cnblogs.com/xdp-gacl/p/4068967.html Maven学习总结(九)--使用Nexus搭建Maven私服 一.搭建nexus私服的目的 为什么要 ...

  8. Maven学习 使用Nexus搭建Maven私服(转)

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  9. 搭建Maven私服那点事

    摘要:本文主要介绍在CentOS7.1下使用nexus3.6.0搭建maven私服,以及maven私服的使用(将自己的Maven项目指定到私服地址.将第三方项目jar上传到私服供其他项目组使用) 一. ...

随机推荐

  1. muduo源码解析6-condtion类

    condition class condition:noncopyable { }; 作用: 实现了最简单condtion操作,包括init,destroy,wait,notify,notifyAll ...

  2. Docker 之常见应用部署

    本文教大家如何将常见的应用使用 Docker 进行部署,巩固大家 Docker 命令的学习,下文教大家如何构建属于我们自己的 Docker 镜像. Tomcat 拉取镜像. docker pull t ...

  3. sql 游标(理论)

    游标是处理结果集的一种机制 --声明游标 --ISO 语法 DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_state ...

  4. Lombok 作者因兼容问题讨伐 IntelliJ IDEA(官方已妥协)

    今天(08/26),你看到本文应该是昨天了. 栈长上班打开电脑,按往常一样打开 IntelliJ IDEA 正准备撸码,突然收到 IDEA 2020.2.1 的更新提醒: 我现在用的还是 2020.1 ...

  5. 水滴app

    在选择了软件工程专业之后,指导教师也让我们参加到了学长学姐的作业之中来,使用学长学姐们的软件并写出自己的使用评价以及自己的一些小评价. 这体验的是第三十二组学长们的软件,他们的队名是自然选择,他们做的 ...

  6. 前端框架之vue初步学习

    Vue.js介绍: Vue.js是一个构建数据驱动的web界面的渐进式框架.Vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件.它不仅易于上手,还便于与第三方库或既有项目整合 ...

  7. IntelliJ IDEA下git版本回退,版本还原

    原文链接:https://blog.csdn.net/hehyyoulan/article/details/80005272

  8. 2020重新出发,MySql基础,MySql数据库备份与恢复

    @ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...

  9. Android开发之ScrollView去掉右侧滚动条,gridview如何去掉外边框

    android:scrollbars="none" android:listSelector="@null"

  10. 【Gin-API系列】实现路由分组(七)

    在之前的文章介绍中我们已经完成了一个API服务的全链路请求设计.调用方式可以看Test目录的代码 // src/test/request_test.go func TestAPI_Request(t ...