一,下载安装以及环境配置
1,下载安装
win64:
nexus-3.20.1-01-win64.zip
链接:https://pan.baidu.com/s/19THgVb6LzLXJlxzomsvwhw
提取码:9vvg
2,下载解压后,获得两个文件夹
3,配置环境变量
4,快捷键,Win+R–>cmd --nexus.exe/run,运行nexus;
nexus相关命令
安装nexus服务:管理员身份 cmd --> 执行nexus.exe /install
卸载nexus服务:管理员身份 cmd --> 执行nexus.exe /uninstall
启动nexus服务:管理员身份 cmd --> 执行nexus.exe /start
停止nexus服务:管理员身份 cmd --> 执行nexus.exe /stop
查看nexus服务:管理员身份 cmd --> 执行nexus.exe /status
注意:后台运行这种方式,nexus服务只要安装一次,安装后默认随系统启动而启动,无需要每次运行 自动命名!!!
5,修改端口号
默认端口号:8081,可修改端口号,打开安装目录下etc文件,然后找到nexus-default.properties文件可以查看修改端口号
我修改端口号为8080;重新执行nexus.exe/run访问浏览器,访问http://localhost:8080/
点击登录,这里用户名默认是admin,密码在:…\sonatype-work\nexus3下的admin_password文件下;
登录以后我们会出现我们点击下一步next
然后系统会让我们修改密码,修改密码完后我们工作目录的admin_password就会自动删除
然后会出现是否允许匿名访问:
点击Next --> 选择“Enable anonymous access” 如下:
点击next,完成首次登录。
二,创建Maven私服
1,登录后切换到齿轮,如下图
2,点击红框齿轮 -->点击Repository -->Repositories -->Create repositories
复制URL,至此,Nexus 的私服仓库已经建立完成,
简单介绍下私服类型如下
私服Nexus的仓库类型有:proxy,hosted,group三种,
1,group类型的仓库【maven-public】管理着proxy和hosted类型的仓库。
- group类型的仓库【maven-public】不会存储实物文件,不会储存依赖和jar包,其实就是一个有点像虚拟的仓库,一个中转站一样的。外界的开发电脑通过连接这个group类型的【maven-public】仓库,从而驱动proxyl类型的【maven-central】仓库去中央仓库下载依赖和构件。以及通过group类型的仓库【maven-public】去上传自己开发的jar包到hosted类型的仓库【maven-releases】或【maven-snapshots】
- 如下图也能看出【maven-public】仓库是管理着【maven-central】【maven-releases】【maven-snapshots】这三个仓库的。
- 如上图在Member repositories成员仓库中,这些仓库是有先后顺序的,排在前面的优先。也就是说,在上图配置下,开发者的电脑连接到私服,若开发者在pom.xml文件中要添加新的依赖,私服会首先在自己的【maven-releases】仓库去查找,若找不到再去【maven-snapshots】仓库查找,若还找不到才会去【maven-central】这个仓库,而【maven-central】仓库其实就是去maven的远程中央仓库下载。
2.hosted类型的仓库,也就是常说的宿主仓库,有【maven-releases】和【maven-snapshots】两个。
- 这两个仓库是可以储存实物文件的。
- 这两个仓库是储存本公司自己的程序员开发的jar包的。开发者可以把自己开发的jar包推送到私服的这两个仓库中,其他的开发者如果想要用这个jar包,就可以在私服的这两个仓库中去下载(当然自己公司开发的jar包,远程中央仓库肯定不会有,也只能是存在自己公司的私服中)。
- 其他开发者下载自己公司开发的jar包,也是通过上面所述,连接唯一接口【maven-public】仓库,然后这个gruop类型的仓库里面有管理releasese(正式版)和snapshots(临时版)顺序,依照顺序下载到对应开发者的电脑的本地maven仓库中。
- 在创建maven项目时,若创建时项目的版本后缀有-SNAPSHOT,则在上传jar包到私服时,会自动上传到【maven-snapshots】库中,而不会上传到【maven-releases】库里。同理,若版本后缀没有“-SNAPSHOT”,则会上传到正式版【maven-releases】库。这种行为操作其实就是Nexus的一种“约定俗成”吧。
3.proxy类型的仓库【maven-central】,先看图。
- 这个仓库比较特别,它有两个属性,一方面它可以连接远程中央仓库去下载依赖,另一方面是这个仓库也是可以储存实物文件,也是一个实实在在的仓库。
- 上图Remote storage配置项https://repo1.maven.org/maven2/,这个就是maven传统的中央仓库,又大又全面又最新(我喜欢用这个),当然我们还有国内的一些镜像仓库源,如阿里云镜像仓库等。
- 这个仓库就是我们的私服去连接maven远程中央仓库,从远程中央仓库下载依赖到私服的这个【maven-central】库中,并会储存在私服的【maven-central】库中,私服再给开发者电脑的本地maven仓库一份。
三,Android Gradle配置发布项目到maven
第一种:使用gradle自动发布
在需要发布的module的build.gradle中加入如下代码,
apply plugin: 'maven'
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
// 仓库路径(只能是hosted仓库)
repository(url: 'http://localhost:8080/repository/homeprint-host/') {
// 你 Nexus 的账户密码
authentication(userName: 'admin', password: 'admin123')
}
pom.project {
version '1.0.1'
artifactId 'homeprint-common'
groupId 'com.homeprint.lib'
description 'xxxxxx'
}
}
}
}
然后在右侧的双击下图中的uploadArchives,即可发布上传
上传完成后,可以在仓库中看到发布的项目
module中使用发布的项目
在工程的build.gradle中添加maven地址
allprojects {
repositories {
maven { url 'http://localhost:8080/repository/homeprint-host/' }
}
}
在module的build.gradle中添加依赖
implementation 'com.homeprint.lib:homeprint-common:1.0.0'