Maven 部署私服依赖
Hello,各位小伙伴大家好,我是老鄭頭。好久不見,最近因為工作的緣故,導致了更新變慢,但是老鄭頭也在積極的做素材的規劃,畢竟學習知識點的歸納和提煉需要一定的時間。
所以還請大家多多見諒,下一期的分享主題我們依舊會圍繞著go語言系列進行。不過老鄭頭會盡量加快節奏。因為接下來的挑戰是對于最近關乎國家戰略有關的區塊鏈。
因為之前有幸參加了相關的一部分項目實戰,所以也想對于這一部分做一個簡單的教程系列。還請大家敬請期待哦。
閑話不多說,我們今天分享的主題就是最近在項目開發上遇到的一個簡單問題總結,就是關于maven私服的上傳jar包。因為大家都知道關于java的項目開發經歷了換代,老鄭頭最開始做開發的時候,使用的是最原始的jar包導入。
就是你需要在網上將你項目中所要的jar進行下載,然后放在項目的lib目錄下,最后使用eclipse進行build。
這樣的壞處就是由于項目過大,或是項目所使用的jar包太多,導致了管理混亂,嚴重的時候,甚至會影響項目的開發。因為會導致jar沖突,或是項目版本和jar包不符。后面我們就開始使用了maven對項目jar包進行管理。
Maven的介紹
百度百科上對于maven的描述是:maven是可以通過一小段描述信息來管理項目的構建、報告和文檔的項目管理工具軟件。
它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。
當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
Maven 有一個生命周期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。
遍歷生命周期旅途中的一個影響就是,Maven 運行了許多默認的插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。
Maven的好處
使用maven的好處當然是有很多的,第一個可以更加方便的管理項目的依賴。
所有的jar包管理上圖所示,一目了然,而且版本和注釋都可以寫清楚,讓開發者更加直觀、明了的了解到項目所用到的jar包和版本。
其次就是使用maven后可以結合jenkins可以實現一鍵部署,省去了中間煩惱,想比與之前的本地打包,然后上傳服務器,接著備份和停服務,最后重啟的繁瑣步驟,maven的使用可以算的上真正的為我們開發者節約了不少的時間,提升我們的開發效率。
最后就是在大型項目的開發過程中,特別是現在很火的微服務構建中,利用maven可以最大程度的幫助我們進行模塊的劃分和復用。有過手動導包開發的小伙伴們更加能夠體會到這其中的變化巨大吧。
Maven的安裝
Maven的安裝可以算的上是非常簡單的了,簡單來講的話可以分為三步走 。
第一步進行下載maven,大家可以通過官網進行下載最新的maven包。
最新的記錄是3.6.2,在需要jdk 環境的說明中有寫到,需要1.7以上的版本,而且官網也提供了編譯好的包和源碼包供大家下載使用。
第二步就是配置環境變量
其實maven的環境變量非常簡單,首先我們看到下載好的maven項目內部是這個樣子的。
然后建立一個maven_home
最后在我們的path里添加相應的bin文件路徑位置即可。
第三步就是驗證 ,使用命令mvn -v 即可
最后提醒大家一點的就是maven的默認倉庫是在C盤,如果需要改變的話,只需要修改settings文件的位置即可。
Maven上傳到私服
Maven的倉庫主要分為三種,第一種就是本地倉庫,
第二種就是公司私服,
第三種就是遠程倉庫。一般來講,如果是自己開發,我們只需要使用遠程鏡像,就可以將遠程倉庫中的jar包下載到自己的本地倉庫。
然后進行使用,但是我們公司有專門的私服。所以我們有時候就需要將某一部分共用代碼打成jar放到私服,以便于大家使用。所以老鄭頭在這里使用三種方式來給大家進行分享。
第一種方式當然是我們最簡單的可視化界面 。這個時候我們只需要問一下運維或是管理服務器的人員,給我們私服的一個賬號密碼和地址即可。
如圖所示,我們只需要將我們打好的jar包上傳,添加延展性、groupID 、artifactID、版本號然后上傳即可。
第二種-通過命令上傳
通過使用maven的deploy命令將本地jar上傳到指定的私服中,步驟如下:
使用命令mvn deploy部署jar包:
其實網絡中有太多的人描述如何上傳jar包到私服,但是老鄭頭試過了,結果顯而易見的不得行,當然也不是全部都不行,只是絕大部分不可以。本著負責任的態度。所以老鄭頭挑選了一個正反例子給大家進行示范,當然有可能只是我不行,也可能是哪一步做錯了導致不行。
mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=E:\jar\alipay-sdk-java.jar -DgroupId=com.alipay -DartifactId=sdk-java -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://10.0.1.xx:8080/nexus/content/repositories/snapshots/各參數代表含義為:
-Dmaven.test.skip=true //跳過編譯、測試
-Dfile=E:\jar\alipay-sdk-java.jar //jar包文件地址,絕對路徑
-DgroupId=com.alipay //gruopId,可自定義
-DartifactId=sdk-java //artifactId,可自定義
-Dversion //版本號
-Dpackaging //打包方式
-DrepositoryId //遠程庫服務器ID
-Durl //遠程庫服務器地址
注:可能出現的問題
1.Return code is: 401, ReasonPhrase:Unauthorized
說明沒有配置權限:打開maven conf 下的setting.xml 中加入如下代碼:
<server><id>snapshots</id><username>admin</username><password>admin</password> </server>因為我將jar上傳至http://10.0.1.xx:8080/nexus/content/repositories/snapshots/ 所以-DrepositoryId=snapshots,而且授權id也是snapshots,如果你要上傳到其它倉庫下記得更改DrepositoryId和授權id
2.Return code is: 400, ReasonPhrase: Bad Request
(1)出現該問題有可能是已經上傳過了這個jar,但是policy沒有選擇Allow Redeploy;
(2)有可能版本不符,快照版不能選擇Release
前提:已經搭建好nexus maven私服,地址192.168.110.240:9091
在maven的setting.xml中找到標簽,在中間加上:
<mirror> <id>nexus</id> <mirrorOf>central</mirrorOf> <url>http://192.168.110.240:9091/repository/maven-public/</url> </mirror>服務器上有幾個主要庫,release,snapshots ,3rdParty,分表代表:發行版,快照版,第三方,發布到哪個庫可自行根據需要選擇,點擊列表右邊的copy按鈕可看到對應庫的發布地址,將該地址拷貝到-Durl參數中即可
如:
最后一個參數:
-DrepositoryId 配置的私服ID,即剛剛在setting.xml中的下的標簽中配置的內容
第三種也是命令的形式
這種方式經過老鄭頭的實測比較可靠(舉例說明),命令如下:
mvn install:install-file -Dfile=D:\\asciidoctorj-pdf-1.5.0-alpha-zh.16.jar -DgroupId=org.asciidoctor -DartifactId=asciidoctorj-pdf -Dversion=1.5.0-alpha-zh.16 -Dpackaging=jar注意一下:這樣做的前提條件是屏蔽掉你所有的鏡像
然后執行命令 maven install命令
總結
以上是生活随笔為你收集整理的Maven 部署私服依赖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最后一个自己_拔剑-浆糊的传说_新浪博客
- 下一篇: 天狮集团云函数实践:自定义业务逻辑实现跨