场景

因远程nexus仓库数据丢失,历史版本组件包全部丢失,一个个项目重新打包上传工作量巨大,切很多历史版本无法找到。因此可以通过上传本地仓库中的组件包进行补充。

操作

第一步:创建远程仓库

(也可以使用现有的),需要使用管理登录

Linux shell脚本示例:上传本地maven repository到nexus仓库中_服务器

选择maven2(hosted)方式

Linux shell脚本示例:上传本地maven repository到nexus仓库中_xml_02

创建仓库配置

Linux shell脚本示例:上传本地maven repository到nexus仓库中_xml_03

查看仓库信息

Linux shell脚本示例:上传本地maven repository到nexus仓库中_上传_04

复制仓库路径,上传时需要用

Linux shell脚本示例:上传本地maven repository到nexus仓库中_maven_05

第二步:准备上传组件包

创建操作目录

sudo mkdir /opt/maven-repo

cd /opt/maven-repo

将需要上传的组件包拷贝到操作目录中

#创建根目录

sudo mkdir com

#拷贝本地仓库组件

sudo cp -r ~/.m2/repository/com/lizz ./com/lizz

上传脚本

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

执行上传脚本

# -u 用户名

# -p 密码

# -r 远程仓库路径

./mavenimport.sh -u admin -p admin123 -r http://nexus.lizz.com/repository/lizz_test

上传异常:修改许可模式

Linux shell脚本示例:上传本地maven repository到nexus仓库中_xml_06

上传成功

Linux shell脚本示例:上传本地maven repository到nexus仓库中_上传_07

maven引用时注意是否引用到了新建的远程库,或者直接上传到在用的maven库中。