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*'