Nexus Repository 制品库
Nexus Repository 分为 OSS 版和 PRO 版,其中 OSS 版本免费使用,提供对制品的常规存储功能;安全扫描、高可用、用户权限等高级功能,需要付费(PRO 版本)使用
Nexus 可以配置 3 种类型的仓库,分别是:proxy、hosted 和 group
- 代理仓库(proxy):代理远程公共仓库,如 Maven 中央仓库
- 本地仓库(hosted):该仓库通常用来部署本地项目所产生的构件
- 仓库组(group):顾名思义,聚合上述两个种仓库统一提供服务
服务搭建
二进制
官网下载并上传至服务器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|statusDocker
在宿主机创建持久化目录用来保存 Nexus 的配置、日志以及存储,然后直接运行1
2
3
4
5
6
7mkdir -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)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
#将脚本拷贝到 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>