批量上傳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 遠(yuǎn)程倉庫地址

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


解釋:

find .:從當(dāng)前目錄開始查找文件。

-type f:僅查找文件(不是目錄)。

-not -path:排除與給定模式匹配的文件路徑。

后面的幾個(gè)?-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|^\./||":將查找結(jié)果中的?./?替換為空,即刪除文件路徑中的?./。

xargs -I '{}':使用?xargs?命令以?'{}?格式傳遞參數(shù)。

curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} :使用?curl?命令上傳文件。-u?選項(xiàng)表示使用用戶名和密碼進(jìn)行身份驗(yàn)證,-X PUT?選項(xiàng)表示使用 PUT 方法上傳文件,-T?選項(xiàng)表示上傳的文件路徑,${REPO_URL}?是 Maven 倉庫的 URL。

請注意,該腳本沒有排除?pom.lastUpdated?文件。如果您想排除這些文件,可以在其他?-not -path?語句后添加一個(gè)新的?-not -path?語句,如下所示:

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容