zoukankan      html  css  js  c++  java
  • Maven篇----05 Nexus3私服管理

    1. Nexus3介绍

    nexus 作为一款优秀的仓库管理工具,不仅默认支持maven、docker、npm、yum、apt等多种仓库的配置。nexus3 最新的还新增了store隔离存储功能,通过UI创建不同的store为repo指定不同的存储空间,达到物理隔离。
    帮助文档

    目录结构说明

    nexus                  安装目录
    ├── LICENSE.txt
    ├── NOTICE.txt
    ├── bin                此目录包含nexus的启动脚本和与启动相关的配置文件,其中的nexus文件是nexus的启动文件。
    ├── deploy             
    ├── etc                配置文件目录。
    ├── lib                依赖库目录。
    ├── public             公共资源目录。
    ├── system             此目录包含构成nexus的所有组件和插件。
    sonatype-work          数据目录
    ├── nexus3
    │   ├── blobs          没有使用绝对路径定义的所有基于文件系统的blob存储的父目录。
    │   ├── cache          此目录包含当前缓存的karaf软件包的信息。
    │   ├── db             此目录包含OrientDB数据库,是repository manager元数据的主要存储。
    │   ├── elasticsearch  此目录包含elasticsearch的当前配置状态。
    │   ├── etc            此目录包含了repository manager的主要运行时的配置。在配置运行时环境中这些文件被进一步补充说明了。
    │   ├── generated-bundles
    │   ├── instances
    │   ├── karaf.pid
    │   ├── health-check
    │   ├── keystores      用于识别repository manager自动生成的秘钥。
    │   ├── lock
    │   ├── log            日志文件存放的目录。
    │   ├── orient
    │   ├── port
    │   ├── restore-from-backup
    └── └── tmp            临时存储目录。
    

    2. Sonatype Nexus Repository Manager

    在右上角点击“Sign In”的登录按钮,输入admin/admin123,登录成功

    2.1. Browse Server Content

    类似于Maven仓库上的搜索功能,就是从私服上查找包,支持模糊搜索的

    2.1.2 Browse Server Content -- Browse

    2.1.3 Browse Server Content -- Upload

    顾名思义就是上传jar包到私服中,可以选择其中一个hosted仓库。

    注意:通过页面直接上传的方式只是上传了jar包,若这个jar通过Maven依赖了其他jar,那其他项目在下载这个jar时无法取得它的依赖。所以,除非这个jar没有任何依赖,否则还是推荐通过命令行或者IDE的方式上传jar包,这样才会把pom一并上传。

    2.2 Repository

    2.2.1 Repositories

    仓库分为三种:Proxy、hosted、group
    【Proxy】
    代理仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
    这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。
    创建Proxy的具体步骤

    1. 点击左上角的“Create Repositories”按钮
    2. 选择要创建的类型,可以选择maven2(hosted)。
    3. 填写详细信息(Nexus默认远程仓库响应慢,而且经常连不上。可以添加阿里云代理仓库)
      Name:aliyun
      Remote Storage:http://maven.aliyun.com/nexus/content/groups/public
      Blob Store:选择代理下载包的存放路径
    4. 选中仓库组 Public Repositories,把 Aliyun Repository 从 Availiable Repositories 中拖到Ordered Group Repositories中,放在Central上边。保存

    【Hosted】
    Hosted是宿主机的意思,用于将第三方的Jar或者我们自己的jar放到私服上。

    Hosted有三种方式,Releases、SNAPSHOT、Mixed
    Releases: 一般是已经发布的Jar包
    Snapshot: 未发布的版本
    Mixed:混合的

    Hosted的创建和Proxy类似,类型需选择maven2(hosted)。

    注意:Deployment Pollcy,我们需要把策略改成“Allow redeploy”,以允许重复发布覆盖同版本的jar包。

    【Group】
    能把多个仓库合成一个仓库来使用,把上几步创建的代理仓库和宿主仓库都加入到“maven-public”仓库组中:

    2.2.2 Blob Stores

    文件存储的地方,创建一个目录的话,对应文件系统的一个目录。
    如果众多项目放在一个blob中,将会导致其非常巨大,所以对于不同的repository建议创建自己的blob。

    2.2.3 Content Selectors

    2.2.4 Cleanup Policies

    2.2.5 Routing Rules

    2.3 Security

    Nexus是基于权限做访问控制的,服务器的每一个资源都有对应的权限来控制,因此用户执行特定的操作时就必须拥有必要的权限。管理员必须以角色的方式将权限赋予Nexus用户。用户可以被赋予一个或者多个角色,角色可以包含一个或多个权限,角色还可以包含一个或者多个其他角色

    包含用户、角色、权限的配置。

    2.3.1 Privileges--Manage privileges

    2.3.2 Roles--Manage roles

    2.3.3 Users--Manage users

    2.3.4 Anonymous--Browse server contents without authenticating

    2.3.5 LDAP--Manage LDAP server configuration

    2.3.6 Realms--Manage the active security realms and their order

    2.3.7 SSL Certificates--Manage trusted SSL certificates for use with the Nexus truststore

    2.4 Support

    包含日志及数据分析。

    2.4.1 Logging

    2.4.2 Metrics

    2.4.3 Status---System status checks

    2.4.4 Support ZIP

    2.4.5 System Information

    2.5 System

    包含API(Nexus这个API文档貌似是用swagger做的)、邮件服务器,设置调度任务等。
    https://help.sonatype.com/repomanager3/rest-and-integration-api

    3. 将本地库批量导入到Nexus3.x上(Maven私服)

    问题描述
    (1)由于公司内网的 Nexus 私服仓库不能联网,本地仓库已经有很多的 maven 的 jar 包了,便想将其从本地仓库导入到 Nexus 私服中。
    (2)Nexus2.x 批量导入本地库是十分容易的,只需将库文件夹复制到对应 nexus 库下面,去网页刷新一下索引就OK了。在 Nexus3.x 中,应该怎么做

    a). 首先访问 Nexus 管理页面并登录,点击“Create repository”按钮新建一个类型为maven2(hosted)的仓库。

    b). 在服务器 /data/nexus 目录下,新建一个文件夹 import,放入我们的本地库文件夹:

    c). 在 repository 文件夹下执行如下命令创建一个 shell 脚本:
    vi mavenimport.sh

    #!/bin/bash
    # copy and run this script to the root of the repository directory containing files
    # this script attempts to exclude uploading itself explicitly so the script name is important
    # Get command line params
    while getopts ":r:u:p:" opt; do
        case $opt in
            r) REPO_URL="$OPTARG"
            ;;
            u) USERNAME="$OPTARG"
            ;;
            p) PASSWORD="$OPTARG"
            ;;
        esac
    done
      
    find . -type f -not -path './mavenimport.sh*' -not -path '*/.*' -not -path '*/^archetype-catalog.xml*' -not -path '*/^maven-metadata-local*.xml' -not -path '*/^maven-metadata-deployment*.xml' | sed "s|^./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
    

    d). 保存退出后执行如下命令

    #赋予其执行权限:
    $ chmod +x mavenimport.sh
    #jar 包都导入到指定仓库中
    $ ./mavenimport.sh -u deployment -p deployment123 -r http://10.15.22.172:8081/nexus/repository/maven-local/
    #注意:命令中 Nexus 用户名、用户密码、仓库地址根据实际情况进行修改。
    

    e). 访问 Nexus 控制台页面,可以发现确实都上传成功了

  • 相关阅读:
    我的浏览器收藏夹分类
    我的浏览器收藏夹分类
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 318 最大单词长度乘积
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 316 去除重复字母
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
    Java实现 LeetCode 315 计算右侧小于当前元素的个数
  • 原文地址:https://www.cnblogs.com/liuyitan/p/13177680.html
Copyright © 2011-2022 走看看