我们在使用maven的时候,对于项目所依赖的jar包,maven默认会在中央仓库下载jar包,到本地的磁盘目录(如果没有配置则是用户目录下/.m2/repository文件夹下)。如果公司内部搭了一个maven私服的话,开发人员将仓库地址指向内网仓库地址,需要的jar包可直接在私服取,下载速度比远程要快,如果本地仓库没有则自动从远程下载并保存在本地。本文使用nexus搭建一个私服。
一、Nexus下载安装
1)下载Nexus 👈 - 下载最新版本,这里使用nexus-3.14.0-04
2)Nexus安装 - 解压缩到本地即可
3)修改配置 - Nexus安装目录下 nexus-3.14.0-04 / etc / nexus-default.properties 配置表中可以修改以下属性:
application-host: Nexus服务监听的主机 application-port: Nexus服务监听的端口 nexus-context-path: Nexus服务的上下文路径
- 这里我保持默认设置
4)Nexus服务启动
● 以管理员身份运行cmd -> 进入到nexus安装目录../nexus-3.14.0-04/bin目录下 ● nexus.exe/install:安装nexus服务 ● nexus.exe/start:启动nexus服务 ● nexus.exe/stop:停止nexus服务
- 安装完成之后,在windows服务里边将看到如下图所示:
5)测试nexus是否安装成功
① 启动服务后,根据 nexus-default.properties 的配置进行登录,如果没有修改,可以在浏览器中输入http://localhost:8081来登录 ② 默认用户名:admin,密码:admin123
nexus可以正常访问和登录,这就说明nexus已经安装成功。
二、使用Nexus(私服)
1)私服工作原理
配置Nexus之前,需要先了解一下私服的工作原理,如下图:

找依赖包的流程: 首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy;
2)Nexus仓库类型介绍
默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等
● hosted(宿主仓库库):存放本公司开发的jar包(正式版本、测试版本)
● proxy(代理仓库):代理中央仓库、Apache下测试版本的jar包
● group(组仓库):使用时连接组仓库,包含Hosted(宿主仓库)和Proxy(代理仓库)
3)上传jar包到远程仓库
② 本地自己开发供给项目组其余同事使用,这种直接配置项目的pom文件和maven的setting文件,之后deploy发布即可发布到
① 第三方jar包,可以直接使用web页面上传并设置对应GAV即可
1.在Maven的 setting.xml 中配置nexus访问权限
<servers> <!-- 配置nexus权限 --> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
2.在项目的pom.xml中配置nexus仓库位置
<!--配置pom 将jar包可以上传到nexus仓库中 --> <distributionManagement> <!-- 发布版 --> <repository> <id>releases</id> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <!-- 快照版 --> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
3.使用deploy命令将项目打包,发布到nexus中
4.检查仓库中是否有上传好的jar包
注意:
① 这里只有Snapshot的仓库上传成功,Release仓库并没有上传成功,这是因为版本号名称结尾有SNAPSHOT,默认以这个结尾是不会上传到Release仓库去的,去除就会上传到Release仓库且不会上传到快照仓库
② Release仓库默认不支持重复发布,可配置
③ 注:setting中server标签下的id要和pom文件中仓库配置的id相同,即指定上传到哪个仓库
4)从远程仓库下载jar包
1.使用profiles标签在Maven的setting.xml中配置仓库组maven-public,仓库组包括releases、snapshots、central
<profiles> <!-- 配置nexus远程仓库地址,从远程仓库下载jar包 --> <profile> <id>mynexus</id> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles>
2.激活profiles标签 - activeProfile的属性需和profile的ID一致
<!-- 激活profiles --> <activeProfiles> <activeProfile>mynexus</activeProfile> </activeProfiles>
3.测试
① 如果之前打包了,删除本地仓库下的mapper.jar
② 关闭mapper子项目,让service子项目依赖mapper.jar包
③ 更新项目,从远程仓库中获取mapper.jar
Maven控制台 - Maven Console
这里显示我们Downloaded了
5)使用自定义用户和自定义仓库进行上传和下载jar包
1.建议先将管理员密码修改;
2.在Roles中可以增加用户权限组,里边可以自定义用户权限;
Roles -> Create role
设置完然后点击创建【Create role】
3.在Users中可以增加用户,分配设置好的权限;
Users -> Create local user
4.在Repositories中新建仓库;
① name:仓库名称;
② version pollcy:版本策略;
- Release:发行版;
- Snapshot:快照版;
- Mixed:混合模式;
③ Layout pollcy:布局策略;
- Strict:严格;
- Permissive:宽松;
④ Deployment pollcy:部署策略;
- Allow redeploy:允许重新部署;
- Disable redeploy:禁止重新部署;
- Read-only:只读;
Repositories -> Create repository -> 设置Name仓库名称、Deployment pollcy部署策略(允许重复部署)
- 自定义仓库创建完成。
5、修改配置,将jar包上传到自定义仓库,然后从自定义仓库下载jar包;
- pom.xml修改
- maven/conf/settins.xml修改
- 修改仓库组,将自定义仓库添加进去,不用的提取出来,保存
- 配置完成,上传下载方式与上面一致。