Gradle系列之从零搭建Maven私服库
原文发于微信公众号 jzman-blog,欢迎关注交流。
前面几篇文章学习了 Gradle 相关知识,Gradle 系列文章如下:
- Gradle系列之初识Gradle
- Gradle之Groovy基础篇
- Gradle系列之构建脚本基础
- Gradle系列之认识Gradle任务
- Gradle系列之Gradle插件
- Gradle系列之Java Gradle插件
- Gradle系列之Android Gradle插件
- Gradle系列之Android Gradle基础配置
- Gradle系列之Android Gradle高级配置
今天的内容是使用 Nexus Repository Manager 搭建 Maven 私服库,这样可以将一些通用的库项目提取出来供其他项目使用,如工具库、基本组件库等,下面将从零开始搭建 Maven 私服库,
- 安装Nexus服务
- 运行Nexus服务
- 发布库项目
- 使用库项目
- 总结
安装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 库的搭建也类似,这篇文章的内容就到此为止。