Nexus 3上傳Maven依賴

在內網環境中開發時,對maven等項目極不友好,由於不能鏈接到Maven中央倉庫,因此現有的解決方式是搭建一個maven私庫(固然,你要是想把包都經過lib的方式引入也行)。用Nexus搭建完並作完配置後,就獲得了一個嶄新的maven倉庫,一個依賴都沒有,比火星還荒涼。
下面有兩種方法能夠對這片不毛之地進行開墾。mysql

方法一 批量上傳

隨着業務功能複雜性上升和微服務架構的廣泛應用,開發過程當中所依賴的第三方包並不像我上大學寫做業時一隻手就能數過來,工程對應的本地Maven庫動輒上百兆,這就須要一個簡單快捷的方法將幾百個依賴都放到私庫上。sql

  1. 確保項目在本地maven環境下無錯誤;
  2. 進入到本地maven庫下
    image.png
  3. 新建立一個sh腳本bash

    #!/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}/{} ;

    腳本建立完畢
    image.png
    4.在當前目錄執行這個腳本,並加上maven私庫的帳號密碼,以及地址架構

./mavenimport.sh -u admin -p admin -r http://IP:PORT/repository/dataservice/

執行完畢後,刷新maven庫,就能夠看到上傳的包了。curl

我本地maven庫佔磁盤200M,上傳大概花費五分鐘左右。maven

方法二 手動上傳

當咱們maven庫已經造成規模,而且僅僅缺乏一兩個依賴的時候,咱們就經過手動上傳的方式添加依賴。微服務

  1. 找到咱們新加的maven庫
    image.png
  2. 點擊進入,點擊左上角上傳按鈕(若是沒有這個按鈕,請先登陸一個有上傳權限的帳號),固然,左側菜單中的Upload也能上傳,和此處功能同樣
    image.png
    3.進入上傳頁面,咱們經過Browse按鈕選擇咱們要上傳的jar,好比咱們要上傳一個mysql的驅動包。上傳以後必定要注意Classifier,若是有值,手動去除。
    image.png
    下面的Group ID,Artificat ID以及Version都須要手動填寫,最後的Generate a POM file with these coordinates必定要勾選,並填寫下面的Packaging,不然這個jar包是不能下載到本地的。對於不知道Packaging內容的同窗,能夠到本地倉庫裏找一下當前jar包對應的pom文件,裏面通常都會說明,若沒有則默認寫jar。
    image.png

固然,只要是人,總會出錯的,因此儘量地避免手動輸入,咱們在導入jar文件後,再添加一個資產,將pom文件也一塊兒導入,這樣就能避免手動輸入出現的錯誤。this

image.png

最後在倉庫裏查看上傳成功的依賴,檢查是否存在pom文件。
image.pngurl

最後包都能順利下載,可是maven插件卻非暴力抵抗,不能提供下載,因而又在maven的配置中加上了私庫地址,而且着重加上了<mirrorOf>central</mirrorOf>這個標籤。spa

這樣本地項目的依賴和maven插件都恢復正常。

最後想起《火星救援》中的一段臺詞:
image.png

相關文章
相關標籤/搜索