搭建自己的私服仓库Nexus

搭建自己的私服仓库Nexus

为什么需要Nexus?

团队所需要的依赖构件都重复的从maven和npm仓库下载,加大的仓库的负载和外网带宽,网速较慢会影响项目进程。团队开发的公共构件怎么让其他项目使用

Nexus:Maven&Npm私服


一、运维篇

1、编辑docker-compose.yml

version: '3'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus3
    ports:
      - 8081:8081
    volumes:
      - /usr/local/docker/nexus/nexus-data:/nexus-data

2、启动

docker-compose up -d

启动成功,访问8081

注意:登录admin,初始密码在文件/sonatype-work/nexus/admin.password中,登录后修改密码

3、如何高可用

通过keepalive+inotify+rsync做到主从ip漂移以及数据同步

4、数据迁移

(1)仓库迁移

Nexus的构件仓库都保存在sonatype-work目录中,该目录的位置由nexus/conf/nexus.properties配置文件指定。
仓库迁移需要两个过程:备份和还原

(2)备份仓库

将sonatype-work文件夹整体备份即可,也可以选择只备份最重要的两个文件夹索引indexer、和仓库storage、

(3)还原仓库

将备份好的sonatype-work文件拷贝到新的服务器中。然后修改nexus/conf/nexus.properties配置文件,重新指定仓库的目录。

二、使用篇

1、仓库说明

(1)默认仓库说明:
  • maven-centralmaven 中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jar
  • maven-releases:私库发行版 jar,初次安装请将 Deployment policy 设置为 Allow redeploy
  • maven-snapshots:私库快照调试版本、jar
  • maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地 maven 基础配置 settings.xml 或项目 pom.xml 中使用
(2)仓库类型说明:
  • group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group 中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为 ReleasesSnapshotsCentral,当然你也可以自己设置。
  • hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件
  • snapshots:本地项目的快照仓库
  • releases: 本地项目发布的正式版本
  • proxy:代理类型,从远程中央仓库中寻找数据的仓库可以点击对应的仓库的 Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径、,如可配置阿里云 maven 仓库
  • central:中央仓库

2、创建仓库

image-20201015100632530

选择仓库类型NPM、MAVEN、

image-20201015100736680

创建代理仓库

Name:就是为代理起个名字
Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/
Blob Store: 选择代理下载包的存放路径

image-20201015105219563

创建私有仓库

deployments pollcy: 是否允许重复发布

image-20201015105700478

创建仓库组

注意:私有仓库在前,代理仓库在后

注意仓库的顺序。maven查找依赖时会依次遍历仓库组中的仓库。

image-20201015110104163

3、权限管理

三、接入篇

1、后端【MAVEN】

(1)maven setting.xml
<servers>
    <server>  
        <id>nexus</id>  
        <username>maven</username>  
        <password>thinkmacro@maven</password>  
    </server> 
</servers>
<mirrors>
    <mirror>  
        <id>nexus</id>  
        <name>nexus repository</name>  
        <url>https://repo.thinkmacro.cn/repository/maven-public/</url>  
        <mirrorOf>central</mirrorOf>  
    </mirror> 
</mirrors>

注意:server的ID和mirror的ID 需要保持一致

(2)pom.xml
<distributionManagement>
        <repository>
            <id>nexus</id>
            <name>Nexus Release Repository</name>
            <url>https://repo.thinkmacro.cn/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus</id>
            <name>Nexus Snapshot Repository</name>
            <url>https://repo.thinkmacro.cn/repository/maven-snapshots/</url>
        </snapshotRepository>
   </distributionManagement>
(3)发布上传到nexus

image-20201014173934926

或执行命令

mvn clean deploy

上传成功

2、前端【NPM】

(1)设置npm仓库
npm config get registry  #http://registry.cnpmjs.org/
npm config set registry http://192.168.0.136:8081/repository/npm-group/
(2)配置package.json
"publishConfig" : {
    "registry" : "http://192.168.0.136:8081/repository/npm-hosted/"
  }
(3)登录私服
npm login –registry=http://192.168.0.136:8081/repository/npm-hosted/
(4)发布上传到nexus
npm publish –registry=http://192.168.0.136:8081/repository/npm-hosted/

注意!publish失败401有可能是nexus缺少npm token登录配置

image-20201015102852052

上传成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值