1,問題描述
(1)由於公司內網的 Nexus 私服倉庫不能聯網,不過本地倉庫已經有很多的 maven 的 jar 包了,便想將其從本地倉庫導入到 Nexus 私服中。
(2)Nexus2.x 批量導入本地庫是十分容易的,只需將庫文件夾復制到對應 nexus 庫下面,去網頁刷新一下索引就OK了。在 Nexus3.x 中,我們沒法這么操作了,但是我們可以使用 shell 腳本,批量導入 Nexus3.x。
2,操作步驟
(1)首先訪問 Nexus 頁面,登錄后點擊“Create repository”按鈕新建一個倉庫。
(2)選擇 maven2(hosted)
(3)按照自身需求填寫如下選項(倉庫名隨意):
(4)在服務器 /home 目錄下,新建一個文件夾 repo,批量放入我們需要的本地庫文件夾:
(5)在 repo 文件夾下執行如下命令創建一個 shell 腳本:
1
|
vi mavenimport.sh
|
(6)腳本內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/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}/{} ;
|
(7)保存退出后執行如下命令賦予其執行權限:
1
|
chmod
+x mavenimport.sh
|
(8)執行如下命令即可將該目錄下的 jar 包都導入到指定倉庫中:
注意:命令中 Nexus 用戶名、用戶密碼、倉庫地址根據實際情況進行修改。
1
|
./mavenimport.sh -u admin -p 123 -r http:
//192.168.60.133:8081/repository/my_repo/
|
(9)訪問 Nexus 控制台頁面,可以發現確實都上傳成功了:
原文出自:www.hangge.com 轉載請保留原文鏈接:https://www.hangge.com/blog/cache/detail_2910.html