Nexus Repository 分为 OSS 版和 PRO 版,其中 OSS 版本免费使用,提供对制品的常规存储功能;安全扫描、高可用、用户权限等高级功能,需要付费(PRO 版本)使用

Nexus 可以配置 3 种类型的仓库,分别是:proxy、hosted 和 group

  • 代理仓库(proxy):代理远程公共仓库,如 Maven 中央仓库
  • 本地仓库(hosted):该仓库通常用来部署本地项目所产生的构件
  • 仓库组(group):顾名思义,聚合上述两个种仓库统一提供服务
    Nexus

    服务搭建

    二进制

    官网下载并上传至服务器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #没有外网手动下载
    wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.42.0-01-unix.tar.gz
    tar xvzf nexus-3.42.0-01-unix.tar.gz
    mv nexus-3.42.0-01 /app/service/nexus
    cd /app/service/nexus
    #前台运行
    ./bin/nexus run
    #后台运行
    ./bin/nexus start|stop|restart|force-reload|status

    Docker

    在宿主机创建持久化目录用来保存 Nexus 的配置日志以及存储,然后直接运行
    1
    2
    3
    4
    5
    6
    7
    mkdir -pv /app/data/nexus && chmod 777 -R /app/data/nexus
    docker run -itd \
    -p 8081:8081 \
    --name nexus \
    --restart=always \
    -v /app/data/nexus:/nexus-data \
    sonatype/nexus3

    修改密码

    点击 “Sign in” 按钮,弹出的登录窗口会提示初始密码位置,查看然后修改
    1
    cat /app/data//nexus/admin.password
    是否开启匿名访问

    仓库创建

    proxy

    点击“Create Repository” -> 选择 maven2(hosted)
    Taobao 代理镜像

    hosted

    浏览器访问 http://128.160.30.236:8081/,点击右上角“Sign in”进行登录
  • 账户:admin
  • 密码:admin123

登录后依次点击“齿轮”->“Repositories”

点击“Create Repository”

选择 maven2(hosted)

依次填入库名跟选择下图红框位置的参数

点击“Create Repository”完成私有仓库创建,找到并打开刚创建的仓库,获取 URL

批量上传

把创建上传 Shell 脚本(vi mavenimport.sh)存放到 maven 同目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#将脚本拷贝到 Maven 本地目录下,不熟悉命令请不要修改脚本名称

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}/{} ;

再一同上传至 Linux 服务器,如下图:

进入目录,给脚本添加可执行权限:chmod +x mavenimport.sh
然后执行:./mavenimport.sh -u admin -p admin123 -r URL 命令,URL 替换为上述步骤创建的 Maven 私有仓库地址。
等待上传脚本跑完,浏览器访问 http://ip:8081/#browse/browse:smcp 查看

仓库引用

  • setting.xml:Maven 全局配置文件
  • pom.xml:本地项目配置文件
    使用 setting.xml 文件引用
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <servers>
    <server>
    <id>smcp</id>
    <username>admin</username>
    <password>admin123</password>
    </server>
    <server>
    <id>smcp-snapshots</id>
    <username>admin</username>
    <password>admin123</password>
    </server>
    </servers>

    <profiles>
    <profile>
    <id>smcp</id>
    <repositories>
    <repository>
    <id>smcp</id>
    <url>http://128.160.30.236:8081/repository/smcp/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>smcp</id>
    <url>http://128.160.30.236:8081/repository/smcp/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>
    </profiles>

    <activeProfiles>
    <activeProfile>smcp</activeProfile>
    </activeProfiles>