原文发于微信公众号 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. StructuredStreaming简单的例子(NewAPI)

    StructuredStreaming简单的例子(NewAPI)(wordCount) package com.briup.streaming.structed import org.apache.l ...

  2. Linux环境下安装JDK8

    Linux环境下搭建Java项目运行环境,首先要安装JDK,安装JDK8的步骤如下: 1 下载JDK安装包 下载地址:http://www.oracle.com/technetwork/java/ja ...

  3. Vue 构造选项 - 进阶

    Directive指令:减少DOM操作的重复 Vue实例/组件用于数据绑定.事件监听.DOM更新 Vue指令主要目的就是原生DOM操作 减少重复 自定义指令 两种声明方式 方法一:声明一个全局指令 V ...

  4. Python中pytesseract库的使用以及注意事项

    当我们在使用pytesseract库的时候,使用 pip install pytesseract安装完成后,发现它并不能识别出图片内容,并且会抛出异常pytesseract.pytesseract.T ...

  5. 怎么下载chrome的扩展程序

    很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展 ...

  6. 一次完整的JVM堆外内存泄漏故障排查记录

    前言 记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些JVM内存分配机制以及常用的JVM问题排查指令和工具分享,希望对大家有所帮助. 在整个排查过程中,我也走了不少弯路,但是在文章中我 ...

  7. 如何解决 iframe 无法触发 clickOutside

    注:(1)非原创,来自https://blog.csdn.net/weixin_33985679/article/details/89699215.https://zhuanlan.zhihu.com ...

  8. .NET Core3.1 Dotnetty实战第二章

    一.概要 在上一篇文章讲到Dotnetty的基本认识,本文这次会讲解dotnetty非常核心的模块是属于比较硬核的干货了,然后继续往下讲解如何根据自己的需求或者自己的喜好去配置Dotnetty而不是生 ...

  9. 码云git clone报错Incorrect username or password ( access token )

    使用码云将仓库clone到本地,报错信息如下: D:\>git clone https://gitee.com/ycyzharry/helloworld.git Cloning into 'he ...

  10. php实现无限极分类(多维数组 / 二维数组)形式

    <?php // 测试数组数据$array = array( array('id'=>'1','title'=>'父级分类1','pid'=>'0'), array('id'= ...