nexus 私服

私服的介绍

仓库概念

中央仓库

目前来说: https://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是镜像。

仓库镜像

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,使用镜像可以提高项目构建效率。

仓库的索引

中央仓库带有索引文件以方便用户对其进行搜索,索引每周更新一次,中央仓库的索引有几十M。

黑名单

如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。

私服

有些公司不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。

请添加图片描述

私服的搭建

下载nexus的压缩包并解压放在一个没有中文的路径下,使用cmd以管理员身份运行


注:使用 /run 来启动,不要使用 /install (这是安装成一个本地服务)文件目录不要有中文

出现这个结果即启动成功,不要关掉cmd窗口(为了保持启动状态,这与TomCat一样)

浏览器访问 localhost:8081 ,会弹出这个窗口,表示访问成功,自动跳转到下图
在这里插入图片描述

登录,去提示的文件路径找到这个文档,使用文本编辑器打开,里面就是密码,复制到这里

在这里插入图片描述

登录成功
在这里插入图片描述

选择启用匿名

在这里插入图片描述

修改私服的中央仓库的地址(记得往下划保存)
在这里插入图片描述

修改RELEASES为允许重新发布(记得往下划点击保存)
在这里插入图片描述

上传项目到私服

创建maven项目

  1. 设置本地仓库访问私服的权限,修改maven的conf/settings.xml配置文件,用户名和密码,复制如下代码到相应位置,大约111行。(3.8.5版本的maven可能会有莫名其妙的问题,这里我使用的是3.6.2版本)
<server>
	<id>releases</id>
	<username>admin</username>
	<password>admin</password>
</server>
<server>
	<id>snapshots</id>
	<username>admin</username>
	<password>admin</password>
</server>
  1. 重新创建一个新的模板a,配置上传项目中的发布管理,坐标如下
    <groupId>com.pan</groupId>
    <artifactId>pan-maven-a</artifactId>
    <version>1.0-SNAPSHOT</version>
  1. 在pom.xml中加入以下代码(放在前面)
<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>

上面的url是仓库的地址

  1. 执行deploy命令,上传项目到私服

在这里插入图片描述

  1. 上传之后去私服查看snapshots上传的结果

在这里插入图片描述

私服下载项目

  1. 创建另一个模块b
<dependency>
    <groupId>com.pan</groupId>
    <artifactId>pan-maven-b</artifactId>
    <version>1.0-RELEASE</version>
  1. 依赖于模块a
<!-- b模块,依赖于a模块。先从本地仓库下载,如果没有就会从远程仓库下载 -->
<dependency>
    <groupId>com.pan</groupId>
    <artifactId>pan-maven-a</artifactId>
    <version>1.0-RELEASE</version>
</dependency>

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>


  1. 删除本地仓库中模块a中的jar包

    在本地中maven里面对应的仓库地址里面的模块名中(比如我,我的是…/com/pan),直接删除,这是上传的时候在本地自动存放的,我们模拟下载的过程要先删除本地的jar包,不然也不知道有没有实现我们要的效果。

  2. 修改maven的\conf\settings.xml文件,项目B是依赖于私服仓库中模块a

<mirror>
   <id>nexus</id>
   <mirrorOf>*</mirrorOf>
   <url>http://localhost:8081/repository/maven-public/</url>
</mirror>

注:后面还要改回来,以后还是要继续使用阿里云的镜像

  1. 清除项目b的缓存文件(使用clean), 再编译一次(compile)
    在这里插入图片描述

  2. 就可以在b项目使用a项目上传到私服的jar包了,在方法中直接使用

<mirror>
	  <id>nexus</id>
	  <mirrorOf>*</mirrorOf>
	  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值