02_nexus详细教程

官方文档

nexus manager:https://guides.sonatype.com/repo3/quick-start-guides/proxying-maven-and-npm/

docker 安装 nexus:https://hub.docker.com/r/sonatype/nexus3/

nexus3 常用仓库类型的介绍

在下面创建仓库的示意图里面会出现这三个仓库类型

  • proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载(下载的jar会保存到当前仓库中),然后返回给用户,相当于起到一个中转的作用。

  • Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里。一般用来存放公司自己的jar包

  • Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可

可以理解成规范吧:

  • maven-public: maven-central maven-release和maven-snapshot三个库的合集。
  • maven-release:用来存放release版本的jar包。
  • maven-snapshot:用来存放snapshot版本的jar包。

关于Maven的Snapshot版本与Release版本

  1. Snapshot版本代表不稳定、尚处于开发中的版本
  2. Release版本则代表稳定的版本
  3. 什么情况下该用SNAPSHOT?协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNAPSHOT来标识自己。
  4. 不用Release版本,在所有地方都用SNAPSHOT版本行不行?不行。正式环境中不得使
    用snapshot版本的库。比如说,今天你依赖某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的
    snapshot库。你再次构建时,Maven会去远程repository下载snapshot的最新版本,你构建时用的库就是新的jar文件了,这时正确性就很难保证了。

花里胡哨,我的代码我爱怎么上传就怎么上传,主要的区别是release 和 snapshot在maven里面是不同的version policy ,但我们在deploy代码到maven仓库的时候(一般会在pom.xml中指定两个仓库地址,release 和 snapshot),会根据我们写的版本决定将这个代码上传到那个仓库汇总。具体情况下面有图片演示

Maven的获取依赖示意图

本地maven私服指定的是一个私有仓库的情况

image-20210111102720359

本地maven私服指定的是一个私有仓库组的情况

image-20210111102839586

使用docker 安装nexus

$ sudo mkdir -p /opt/data/nexus/nexus-data && sudo chown -R 200 /opt/data/nexus/nexus-data && \
docker run -d -p 8081:8081 \
-e INSTALL4J_ADD_VM_PARAMS="-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g" \
-e NEXUS_CONTEXT=nexus \
-v /opt/data/nexus/nexus-data:/nexus-data \
--restart always
--name nexus sonatype/nexus3


# 测试  
$ curl http://192.168.1.100:8081/nexus/

# 启动后,查看日志信息
$ docker logs -f nexus

访问并登录到nexus

浏览器访问nexus 的地址

image-20210110200335091

登录nexus 服务

image-20210110200631483

查看密码

image-20210110200721188

登录成功,进入引导页面

image-20210110200823255

image-20210110200911919

image-20210110201118320

image-20210110201136423

创建用户(部署代码需要用户信息)

添加一个用户

image-20210110211526999

image-20210110211837530

配置私有仓库

创建一个proxy仓库、两个hosted仓库

创建私有仓库

image-20210110203505116

image-20210110203549799

设置私有仓库的具体信息

image-20210110204349701

image-20210111103354794

image-20210110205056576

修改仓库的信息,设置远程仓库地址为阿里云的:http://maven.aliyun.com/nexus/content/groups/public

image-20210110205310391

再创建两个仓库(release和snapshots),先创建releases的仓库

image-20210111155845546

image-20210111160235866

在创建一个存储临时版本的maven (hosted)仓库

image-20210111160528482

image-20210111160843652

settings、pom.xml 示例demo

设置maven的settings文件

流程:找不到才会往下接着找
mvn compile -> 从本地仓库找依赖(localRepository),找不到-> 从远程仓库找(repositories),找不到 -> 下载依赖到代理仓库,同时从代理仓库里面获取依赖。下载的镜像源是看看你的mirrors,如果没有配置,会使用远程仓库的mirror进行下载
<!-- filename settings.xml.haitao.bak -->
<settings>
  <!-- 改成你想设置的本地仓库路径 -->
  <localRepository>/opt/module/maven-3.6.3/maven_repository_haitaoss</localRepository>

  <!-- 为仓库列表配置的下载镜像列表。 -->
  <!-- 如果这里不配置,那么会使用私服里面配置的中央仓库地址下载依赖  -->
  <mirrors>
    <!-- 这里最好配置的是中央仓库,或者你能确定你配置的私服仓库里面的依赖满足项目的需求 也可以配置私服仓库地址 -->
    <!-- <mirror>
       就是本地在下载依赖的时候,通过这个镜像去下载(去这个镜像里面找文件)
      <id>nexus</id>
      <url>http://192.168.1.100:8081/nexus/repository/haitao-maven-repository/</url>
      如果url不是中央查明库地址,这里可以写 *
      <mirrorOf>*</mirrorOf>
    </mirror> -->

    <!-- 建议写这个 -->
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <!-- 如果url是中央仓库的地址,mirrorOf 必须写central -->
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  <!-- 配置好用户名和密码 -->
  <servers>
    <server>
      <id>nexus</id>
      <username>haitaoss</username>
      <password>haitaoss</password>
    </server>
  </servers>
  <profiles>
    <!-- 定义配置文件 -->
    <profile>
      <id>nexus</id>
      <!-- 设置编译器信息 -->
      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.comp
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值