文章目录
- 1. Maven 私服简介
- 2. Nexus下载安装
- 3. 如何使用Nexus私服
- 3.1 通过Nexus下载Jar包
- 3.2 将Jar包部署到Nexus
- 3.3 引用别人部署的jar包
1. Maven 私服简介
Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。
当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是保密的等等,因为局域网的话只能在公司用,部署到公网的话员工在家里也可以办公使用。
建立了 Maven 私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载。
- 请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步;
- 请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3 步。
- 请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。
此外,一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。
Maven私服的优势:
- 节省外网带宽:消除对外部远程仓库的大量重复请求(会消耗很大量的带宽),降低外网带宽压力。
- 下载速度更快:Maven私服位于局域网内,从私服下载构建更快更稳定。
- 便于部署第三方构件: 有些构件无法从任何一个远程仓库中获得(如:公司或组织内部的私有构件、Oracle的JDBC驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部Maven项目使用。
- 提高项目的稳定性,增强对项目的控制:如果不建立私服,那么Maven项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven也能够正常运行。私服软件(如:Nexus)提供了很多控制功能(如:权限管理、RELEASE/SNAPSHOT版本控制等),可以对仓库进行一些更加高级的控制。
- 降低中央仓库得负荷压力:由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。
常见的Maven私服产品:
6. Apache的Archiva
7. JFrog的Artifactory
8. Sonatype的Nexus([ˈneksəs])(当前最流行、使用最广泛)
2. Nexus下载安装
① 下载地址:https://help.sonatype.com/repomanager3/product-information/download
用啥下啥,我这里先用的windows系统:
② 找个位置解压,最好是没有中文/空格的路径下
③ 以管理员的身份打开CMD命令行,进入nexus*/bin目录下,输入.\nexus.exe /run
命令启动Nexus
假如启动失败,可以将解压后的目录全部删除,然后重新解压,重新启动。
当看到如图中出现Started Sonatype Nexus OSS *
,即启动成功。
④ 首页地址:http://localhost:8081/,8081为默认端口号
⑤ 登录,输入账号密码,账号默认为admin,密码则已经在登陆页面给出了地址,直接去找个地址找即可。
⑥ 登录后点Next后需要更新你的密码
⑦ 是否允许匿名访问,这个看个人需求,我这里就选择不允许匿名访问了
⑧ Nexus上的各种仓库
仓库类型 | 说明 |
---|---|
proxy | 某个远程仓库的代理 |
group | 存放:通过 Nexus 获取的第三方 jar 包 |
hosted | 存放:本团队其他开发人员部署到 Nexus 的 jar 包 |
仓库名称 | 说明 |
---|---|
maven-central | Nexus 对 Maven 中央仓库的代理 |
maven-public | Nexus 默认创建,供开发人员下载使用的组仓库 |
maven-releases | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本 |
maven-snapshots | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本 |
初始状态下,这几个仓库都没有内容。
3. 如何使用Nexus私服
3.1 通过Nexus下载Jar包
① 修改本地Maven的配置文件,修改镜像源为Nexus私服
<mirror>
<id>nexus-mine</id><!-- 唯一id,可以自定义 -->
<mirrorOf>central</mirrorOf><!-- 中心仓库 -->
<name>Nexus mine</name><!-- 镜像名,可以自定义 -->
<url>http://localhost:8081/repository/maven-public/</url> <!-- Nexus仓库地址 -->
</mirror>
其中url
中地址来源:
② 如果Nexus开启了禁止匿名访问,那么还有继续配置settings.xml
<server>
<id>nexus-mine</id><!-- 唯一id,mirror处自定义的id-->
<username>admin</username><!-- Nexus的账号-->
<password>123456</password><!-- Nexus的密码 -->
</server>
③ (可选)给Nexus私服配置阿里云镜像: 设置⚙ --> Repository --> 单击maven-center --> maven-central --> 修改镜像源地址
如果觉得下载慢,可以改成阿里云镜像:http://maven.aliyun.com/nexus/content/groups/public/
然后就可以从私服下载了。
3.2 将Jar包部署到Nexus
① 在项目的pom.xml文件中加配置:
<distributionManagement>
<snapshotRepository>
<id>nexus-mine</id><!-- 唯一id,与maven中配置文件的mirror处自定义的id对应 -->
<name>Nexus Snapshot</name><!-- 自己起名-->
<url>http://localhost:8081/repository/maven-snapshots/</url><!-- snapshots版本的仓库地址-->
</snapshotRepository>
</distributionManagement>
② 执行mvn deploy
或直接在IDEA的maven可视化中去双击deploy
3.3 引用别人部署的jar包
在项目的pom.xml中可以指定从哪个镜像源下载jar包:
<repositories>
<repository>
<id>nexus-mine</id>
<name>nexus-mine</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>