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 控制台页面,可以发现确实都上传成功了

  • 相关阅读:
    iOS App之间跳转
    iOS 编码转换
    iOS文件类型判断
    iOS 运行时
    libqrencode生成二维码
    设置app的启动图
    根据字体计算CGRect
    iOS 英文学习
    libev 中IO事件循环解析
    libev 默认事件循环初始化的解析
  • 原文地址:https://www.cnblogs.com/liuyitan/p/13177680.html
Copyright © 2011-2022 走看看