Nexus版本是2.X , 开发需要使用新特性,进行升级,通过查询官网发现,需要升级到2.X特定版本,才能升级到3.X的对应版本.

https://help.sonatype.com/repomanager3/upgrade-compatibility---repository-manager-2-to-3

nexus 2.X版本升级 3.X版本_第1张图片

首先升级到2.X的最近版本2.14.8, 从官网直接下载,解压, 然后修改对应的数据目录为现在版本的数据目录, 启动就可以了

在 2.14.8中配置升级选项
nexus 2.X版本升级 3.X版本_第2张图片

其中4处为同步密码
添加完成以后
nexus 2.X版本升级 3.X版本_第3张图片

下载3.12.0最新版本

[root@jenkins bin]# cat /usr/local/nexus-3.12.0-01/bin/nexus.rc
run_as_user="root"

修改启动用户

[root@jenkins bin]# cat /usr/local/nexus-3.12.0-01/bin/nexus.vmoptions
-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=2G
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=/opt/nexus/sonatype-work/nexus3 ##此处修改数据存放目录为新目录,与之前区别开
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false

#修改数据存放目录

[root@jenkins etc]# cat /usr/local/nexus-3.12.0-01/etc/nexus-default.properties
application-port=8082
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/

nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature

#修改临时端口,因为同一台升级,修改端口,避免冲突

nexus 2.X版本升级 3.X版本_第4张图片

登录以后配置同步

nexus 2.X版本升级 3.X版本_第5张图片

nexus 2.X版本升级 3.X版本_第6张图片

nexus 2.X版本升级 3.X版本_第7张图片

nexus 2.X版本升级 3.X版本_第8张图片

nexus 2.X版本升级 3.X版本_第9张图片

配置链接信息

nexus 2.X版本升级 3.X版本_第10张图片

nexus 2.X版本升级 3.X版本_第11张图片

nexus 2.X版本升级 3.X版本_第12张图片

迁移所有仓库

nexus 2.X版本升级 3.X版本_第13张图片

nexus 2.X版本升级 3.X版本_第14张图片

nexus 2.X版本升级 3.X版本_第15张图片

nexus 2.X版本升级 3.X版本_第16张图片

等待完成以后,直接continue 然后 直接下一步,完成.

****参考链接
https://www.ilanni.com/?p=12366

#############注意升级以后nexus的路径有了变化
http://*****:8081/nexus/content/groups/public/ 以前的地址

http://*****:8081/content/groups/public/ 新的地址

这样需要修改maven的 .m2/setting.xml文件, 在打包的时候才能找到正确的依赖包.

如果不这样处理, 我的方法是在仓库前端加一个nginx代理

server {
listen 8081;
server_name **;
location / {
rewrite ^/nexus/(.*) http://******:8082/$1 permanent;
}
}

Rewtite 匹配/nexus/ 跳转到 nexus真正地址/ 参数保持不变,这样就不需要其他人进行修改,保持原有url不变