批量上传Maven仓库jar包到Nexus私服

https://blog.csdn.net/lazycheerup/article/details/126060282

mavenimport.sh

#!/bin/bash

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 './upload.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 nexus用户名 -p nexus密码 -r 远程仓库地址

sh mavenimport.sh -u admin -p admin123 -r http://127.9.9.1:8081/repository/bemp-snapshots/


解释:

find .:从当前目录开始查找文件。

-type f:仅查找文件(不是目录)。

-not -path:排除与给定模式匹配的文件路径。

后面的几个 -not -path 语句分别排除以下文件/路径:

./mavenimport\.sh*:以 mavenimport.sh 开头的文件。

./upload.sh:名为 upload.sh 的文件。

*/\.*:所有以 . 开头的隐藏文件。

*/\^archetype\-catalog\.xml*:以 ^archetype-catalog.xml 开头的文件。

*/\^maven\-metadata\-local*\.xml:以 ^maven-metadata-local 开头的 XML 文件。

*/\^maven\-metadata\-deployment*\.xml:以 ^maven-metadata-deployment 开头的 XML 文件。

sed "s|^\./||":将查找结果中的 ./ 替换为空,即删除文件路径中的 ./。

xargs -I '{}':使用 xargs 命令以 '{} 格式传递参数。

curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} :使用 curl 命令上传文件。-u 选项表示使用用户名和密码进行身份验证,-X PUT 选项表示使用 PUT 方法上传文件,-T 选项表示上传的文件路径,${REPO_URL} 是 Maven 仓库的 URL。

请注意,该脚本没有排除 pom.lastUpdated 文件。如果您想排除这些文件,可以在其他 -not -path 语句后添加一个新的 -not -path 语句,如下所示:

-not -path'*/\^pom\.lastUpdated*'

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容