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