我是使用docker装的nexus3,跟linux一样用起来一样,
如果你还没有安装nexus3,可以参照我写的这个 docker安装nexus3 (离线/内网)_zk_Kang的博客-CSDN博客
因为公司是内网,公司原来用的是nexus2,我这是升级到nexus3最新版 3.40.1
其他版本都一样。
1.首先说下思路
1.安装nexus3之后,可以加一个proxy代理,把nexus2的路径加入新的代理中,这个方法最简单,但是也需要保留nexus2,这样就等于nexus3和nexus2共存,达不到升级的效果。
2.直接将nexus2下的jar拷贝到nexus3中,此方法也不行,因为nexus2(jar)和nexus3(byte文件)两个jar存放类型文件不一致,不能直接拷贝,
3.直接使用官方指定升级,,增加token,最后到upgrade中,升级。此方法最推荐,但是这有一个最大的问题,就是版本问题,有的到最后一步会提示 Cannot upgrade nexus/OSS/xxx to nexus/OSS/ xx Nexus Repository Manager xx or higher is required 。这就是版本不支持,要不就参照官网的指导方法,重新下载版本,重新尝试。
4.直接将旧的nexus2下的jar包,通过脚本直接传到新的nexus3里,我使用的就是此方法
这四种方法我都试过,最后使用第四种方法成功搭建maven仓库。
2.介绍第四种方法
1.先找到旧的nexus2上的jar包存放地址,将storage目录直接打包压缩,tar
直接使用xftp或者scp命令直接把这个打包好的压缩包传递到 nexus3服务器上任意一个空目录下。
2.写脚本
在压缩包目录下,新建一个.sh文件,名字随便起,vi 123.sh
内容如下,直接复制到123.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}/{} ;
赋予123.sh文件执行权限
chmod a+x 123.sh
执行命令
其中*** 为你的密码,后面的http一长串就是你nexus3上新建立的maven本地仓库地址。
./123.sh -u admin -p *** -r http://ip:端口/repository/maven-hosted/
这个执行会占用很长时间,具体要看你要传递多少个jar
传递完后,直接在nexus3页面中对应的仓库查看