因为某些原因某些企业希望私服是不能连接外网的,所以需要某些开源依赖需要我们手动导入到nexus中,尽管nexus为我们提供了web页面。但是一个个手动导入显然是一个庞大的工程。
对此我们就不妨基于脚本的方式实现这一过程。
笔者本地仓库有一个自定义的jar包,本次实验会通过脚本的方式将其上传到私服上。
然后我们其他的项目会通过私服将这个依赖引入,实现内网引入这个自定义依赖,如下图所示,将自定义通过脚本批量导入私服之后,我们可以直接导入。
因为笔者私服是nexus3所以基于脚本导入依赖时是需要自己手动创建hosted仓库的。
进入选择页面,我们选择maven-hosted,进行本地仓库配置。
配置我们的本地仓库,读者可以按照下图的注释自行配置。
完成配置后到最下方点击创建。
以笔者为例,为了实验笔者将所有的com包都传到服务器上。
我们仓库目录中编写脚本,以笔者为例,笔者仓库目录为/tmp/nexus-repository/,所以笔者就在这个目录编写一个脚本
vim 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}/{} ;
完成后添加执行权限
chmod +x mavenimport.sh
重点步骤来了,我们到脚本的目录执行脚本,命令模板如下
./mavenimport.sh -u nexus账户 -p nexus密码 -r 自定义hosted地址
以笔者为例,笔者的命令就是
./mavenimport.sh -u admin -p xxxxx -r http://ip:8081/repository/my-hosted/
然后脚本就会不断输出内容,将com包的所有依赖导入到nexus私服中,待脚本执行结束后,我们到nexus管理页面查看一下依赖是否导入成功。
点击浏览,查看我们的自定义仓库。
可以看到我们的com包都成功导入了。
我们本地将com包删除,然后引入自定义的com依赖看看。
到idea点击导入
可以看到类成功导入了,实验成功。
如下图,我们必须将整个IO上传到服务器上,然后使用脚本导入。