Maven篇----05 Nexus3私服管理

https://help.sonatype.com/repomanager3

1. Nexus3私服管理

1.1 Browse Server Content

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

1.1.2 Browse Server Content -- Browse

1.1.3 Browse Server Content -- Upload

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

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

1.2 Server Adminstration And configuration

在右上角点击“Sign In”的登录按钮,输入admin/admin123,登录成功之后,即可看到此功能,如图所示:

1.2.1 Repository

1.2.1.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)。

扫描二维码关注公众号,回复: 11352624 查看本文章

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

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

1.2.1.2 Blob Stores

文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示我已经创建了两个额外的存储块:

1.3 Security

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

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

1.4 Support

包含日志及数据分析。

1.5 System

包含API(Nexus这个API文档貌似是用swagger做的)、邮件服务器,设置调度任务等。

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

2.1 首先访问 Nexus 页面,登录后点击“Create repository”按钮新建一个仓库。

2.2 选择 maven2(hosted),按照自身需求填写如下选项(仓库名随意):

2.3 在服务器 /home 目录下,新建一个文件夹 repo,批量放入我们需要的本地库文件夹:

2.4 在 repo 文件夹下执行如下命令创建一个 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}/{} ;

2.5 保存退出后执行如下命令

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

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

3. Nexus3目录结构

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            临时存储目录。

4. Nexus3与Nexus2的区别

猜你喜欢

转载自www.cnblogs.com/liuyitan/p/13177680.html