8、Maven私服仓库的搭建
01、概述
在实际的开发和场景中,我们大部分情况都是协同开发,我们之前使用maven可以高效的管理我们的项目,可以把项目中的jar包,可以很快速的通过坐标然后通过网络从远程仓库或者阿里云仓库的中把对应的jar包下载到本地仓库中。就好比下载电影一样, 在线看太慢了,下载到本地电脑慢慢欣赏一样的道理。
而在企业中,我们所需的注解只能够通过第三方的maven仓库远程下载到本地,下载速度相对比较慢,耗时很长,不利于管理。其实最快的方式就是在一个 局域网或 者用U盘拷贝和文件传输即可。到时候U盘拷贝和文件传输还需要用户自己手动的去添加到本地仓库,就有点麻烦。所以大部分情况下:公司在建设项目之初就会在公司内部搭建一个maven的私服 仓库nexus。进行本地仓库和远程仓库的链接和下载工作。从而服务团队的协作以及高效的下载和管理组件jar包。
02、具体步骤
1、首先下载nexus
help.sonatype.com/repomanager…
在这里我们进行下载可能会遇到的一些问题:
- 页面下载可能打不开
- 可以试试复制链接在迅雷或者其他软件进行下载(因为可能会网络卡加载不出来)
- 最后就是针对mac用户的一些问题:如果你复制了链接但是打开无法下载,大小显示0kb,那么解决方案是可以试试将你的版本更改一下,亲测有效!
2、然后解压即可
3、配置环境变量
为什么在开发中我们都要把很多软件去配置环境变量,一个原因:
方便你在任何命令行可以找到你的应用程序,就不要你在进入到执行目录下找文件启动。
- 配置环境变量
- 首先编辑这个文件
vim ~/.bash_profile - 然后增加下面一行配置
export PATH=${PATH}:/usr/local/nexus-3.38.1-01-mac/nexus-3.38.1-01/bin
如下所示:
- 然后保存并退出,输入命令
:wq - 输入
source ~/.bash_profile让文件立即生效! - 启动nexus,如果不了解命令的话可以输入nexus查看提示!
- 启动后,nexus默认监听端口是8081
如果如上所示就启动成功了。默认监听端口是8081,如果你想要更改可以通过 /usr/local/nexus-3.38.1-01-mac/nexus-3.38.1-01/etc 目录下的 nexus-default.properties 配置文件进行修改如下:
切记不是本机的etc目录
4、运行nexus的方式(.exe 可以不加)
-
前台运行:nexus start | nexus.exe /run (前者是mac,后者是win)
-
后台运行:(推荐)
- 安装nexus服务:管理员身份运行:cms- ->运行nexus.exe /install
- 卸载nexus服务:管理员身份运行:cms- ->运行nexus.exe /uninstall
- 启动nexus服务:管理员身份运行:cms- ->运行nexus.exe /start
- 停止nexus服务:管理员身份运行:cms- ->运行nexus.exe /stop
- 查看nexus服务:管理员身份运行:cms- ->运行nexus.exe /status
-
==注意:后台运行这种方式,nexus服务只需要启动一次,后续会随着系统的启动而启动,无须每次都运行启动命令。==
5、访问
在浏览器输入
http://127.0.0.1:8081/nexus或者http://localhost:8081/nexus
出现下面这个界面,没关系,点击nexus repo..图标,跳转到下一个界面。
03、登录关于密码问题
在我们的安装完成之后会有两个文件打开我们的 sonatype-work 打开目录:
sonatype/nexus3/admin.password
默认密码文件,修改一次密码之后会自动删除,默认账号为admin,打开密码文件,然后登录即可!
进入以后会让你修改密码。建议改成简单一点的密码即可。一旦修改目录的密码文件会自动删除掉!
现在让所有用户可以访问,不需要账户密码访问,如下:
接下来就可以看到nexus的配置了。选择左侧的Browse如下:
就可以看到对应的远程仓库,接下来就是如何将nexus与阿里云远程仓库建立连接。
然后点击结束即可!
04、Nexus和阿里云仓库配合
点击上面的齿轮,开始进行远程仓库和nexus的关联。
Repository仓库界面罗列了多个默认仓库,也可以添加新的仓库。
- maven-center :type为proxy表示代理仓库,用来代理远程仓库- - 下载组件是,如果代理仓库找不到,就会从远程仓库(默认是:repo1.maven.org/maven2/)后续我…
默认情况下是和国外的远程仓库关联的。如何进行修改呢?点击当前的maven-center如下:
修改如下:
maven.aliyun.com/nexus/conte… - - ->然后向下滑动滚动条,点击save按钮进行保存。至此maven-center远程仓库地址就配置完成了。
- maven-releases/maven-snapshosts。type是hosted。表示宿主仓库,主要用来部署团队内部的自己,其中maven-releases是用来部署团队内部的发布版本组件,maven-snapshosts用来部署团队内部的快照版本的组件
- maven-public:type是group,表示分组仓库,默认将maven-center、maven-realeases、maven-sniphots三个仓库在一起对外提供服务,简化了:maven客户端在setting.xml或者pom.xml中进行配置
中央仓库地址:http://127.0.0.1:8081/repository/maven-central/
SNAPSHOT地址:http://127.0.0.1:8081/repository/maven-snapshots/
RELEASES地址:http://127.0.0.1:8081/repository/maven-releases/
自建的地址:http://127.0.0.1:8081/repository/maven-self/
聚合地址:http://127.0.0.1:8081/repository/maven-public/
05、最终使用的仓库地址- - -下载
http://127.0.0.1:8081/repository/maven-public/
具体应用
1、在本地的maven的setting.xml进行镜像的配置如下:
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</mirror>
2、创建maven项目,然后添加依赖即可
可以看到下载jar包的时候就是从自己的私服仓库进行下载到本地仓库中。
06、关于Maven手动配置jar到本地仓库?
- 阿飞丢了一个jar包
- 小k同学,下载执行下面的命令
mvn install:install-file -Dfile="/Users/mac/Documents/项目/phutools.jar" -DgroupId=com.pug.htools -DartifactId=phtools -Dversion=1.1.0 -Dpackaging=jar
- 小k同学在他的maven项目,依赖坐标即可
<dependency>
<groupId>com.pug.htools</groupId>
<artifactId>phtools</artifactId>
<version>1.1.0</version>
</dependency>
07、最终使用的仓库地址- - -上传
1、向客户端setting。xml文件的servers标签添加如下配置
<server>
<id>nexus</id>
<username>admin</username>
<password>123456</password>
</server>
2、修改您项目的pom.xml,向project根目录添加如下配置
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<!--
RELEASE:释放版本,代表当前的版本是一个稳定版本,只会修复问题和bug,不会有重大调整
Snapshot:代表是一个正在开发的版本,不稳定
你做开源项目或者架构才会对version关注比较深!
-->
08、关于RELEASE版本不允许重复发布的问题
发布release版本只需要在项目的pom.xml修改对应的版本即可!
<version>1.0-RELEASES</version>
修改releases允许覆盖和发布旧的版本
默认情况下:releases版本是禁止重复上传和发布的,我们可以在下面打开允许重复发布和覆盖旧的版本,修改如下:
然后save即可!
运行项目的deploy命令,执行结果如下:
其实建议:不要打开,而是每次发布增加版本号。既然你都要更新和发布了,说明有新的变化。你为什么不加版本号呢?