一:問題場景
在開發過程中,我們有時會遇到Maven中央庫沒有的jar包,比如公司自己開發的而又沒有放入公司私庫的jar包,這時就不能通過三圍在pom中直接引入。那么怎么在項目中引入這些本地或第三方jar包呢?
二:解決方法
常用的解決方法主要有兩種。
第一種是將本地jar包安裝在本地maven庫。這種方法簡單方便,以后其他項目需要引入時不需要再次安裝。如果沒有放入公司私庫,則不適合協同開發,比如一位同事在本地安裝了這個jar包,另一位同事通過SVN或git將代碼下載下來后,由於本地庫沒有安裝該jar包,可能會報錯。
第二種是將本地jar包放入項目目錄中。這種方法解決了第一種方法中的問題,但需要在pom文件中加上少許配置,這種方法根據將項目打包成jar和war包而略有不同。
三:詳細方法
(1)安裝在本地maven庫
假設我們需要引入的包為 myjar-1.0.jar
(1.1)打開cmd,進入myjar-1.0.jar所在的目錄
(1.2)執行如下命令:mvn install:install-file -Dfile=myjar-1.0.jar -DgroupId=com.ws.sample -DartifactId=myjar -Dversion=1.0 -Dpackaging=jar
注意:install:install-file 中-file與install之間沒有空格,三圍可以根據自己需求設置
然后去本地資源庫看下是否有相應文件
(1.3)在pom依賴中引入安裝的jar包
第一種方法介紹完畢
(2)本地jar包放入項目目錄中(項目打包成jar)
(2.1)jar包結構
(2.2)在本地項目目錄中建一個目錄專門來放jar文件,位置可根據需求設置,如項目根目錄下建一個lib目錄,並將本地jar包放入lib目錄下。
(2.3)pom依賴中加入如下配置
說明:basedir是自帶變量,指的是當前項目的絕對路徑
此時,在項目中使用myjar-1.0.jar包中類完全沒有問題,但是我們來看看打包后結果:
在mvn clean package將項目打包成jar包后,BOOT-INF\lib目錄下並沒有我們引入的myjar-1.0.jar包
這時,還需要在pom中加入如下配置
再次打包,mvn clean package打包后結果:
在使用mvn clean package將項目打包成jar包后,BOOT-INF\lib目錄下出現了我們引入的myjar-1.0.jar包
項目引入本地jar包並打包成jar包的方法介紹完畢,2.4節將介紹一種和本節相似的方法。
(2.4)通過資源來控制打包
注意:第二個resource不能少,否則src/main/resources目錄下資源不會被打包進項目jar包
此種方法也需要配置spring-boot-maven-plugin,只是相對2.3中配置去掉configuration的配置,這種方法個人感覺沒有2.3節方便
(3)項目打包成war包
(3.1)war包結構
(3.2)我們按照第2節中方法,將項目打包成war包,而不是jar包,看看打包后結果:
發現按照打包jar包的方法打包成war包時,本地jar文件並沒有打包進來。
(3.3)在pom中添加如下插件
說明:插件將lib目錄下的本地jar包打包進WEB-INF/lib目錄
mvn clean package,再次將項目打包成war包,再次看下打包結果:
本地myjar-1.0.jar被打包進項目war包的lib目錄了。
第二種方法介紹完畢
提升個人競爭力,歡迎關注我的微信公眾號:破局人