Springboot項目打包


 

最近學習springboot,打包時候問題比較多,所以記錄下

 

一、打包方式

通過maven打包,可以打成jar、war、ear三種,但是常見的是jar、war包

 

1、打成jar包:

(1)好處:作為第二、三方依賴:

此處我們通過命令窗口來執行package命令,//注意進入到spring-boot-app項目的目錄下執行命令:

D:\Workspace_IDEA\spring-boot-app> mvn -Dmaven.test.skip -U clean package

 

(2)通過java -jar 命令執行jar包

執行jar包:打成的jar包默認放到target目錄下,此時我們進入到target目錄下執行命令:

D:\Workspace_IDEA\spring-boot-app\web\target>    java -jar web-0.0.1-SNAPSHOT.jar

 這種啟動方式:稱之為jar包的啟動方式

此時,該項目就啟動了,我們可以通過postman等工具來調用接口進行訪問了

 

2、打成war包

好處:打成war包,我們也可以通過java -jar的方式來啟動,並進行訪問;當然了另一個好處就是,war包可以放在tomcat、jboss容器中運行

maven默認是打成jar包的,如果要打成war包,我們需要在pom中指定打包方式為war的格式:

<packaging>war</packaging>

 

3、補充:

打包:需要在項目的目錄下執行package命令,因為項目的目錄下有pom文件,該文件中有maven的插件等

執行jar包、war包:需要進入到對應的target目錄下,很簡單,因為打成的jar、war被放在了target目錄下,我們只有進入到了target目錄,才可以看到對應的jar、war文件,才可以對其進行執行

 

 二:mvn的package、install命令

1、mvn package:

  進行打包,我們可以在target目錄下可到對應的jar包、war包

 

2、mvn install命令:

進行打包,並將打好的jar、或者war包放到本地倉庫中

 

3、舉例:

spring-boot-app項目,由web、repository、model三個模塊組成。

web模塊依賴persistence、而persistence又依賴model模塊;web模塊的打包方式是war,model、persistence模塊的打包方式是jar
此時我們執行install命令的效果是: spring
-boot-app項目下:web、persistence、model在各自的target目錄下,生成相對應的war、persistence-0.0.1-SNAPSHOT.jar、model-0.0.1-SNAPSHOT.jar 同時在本地倉庫中:web、persistence、model的目錄下,會對應生成相應的web-0.0.1-SNAPSHOT.war、persistence-0.0.1-SNAPSHOT.jar、model-0.0.1-SNAPSHOT.jar

 

 

 三、問題

1、springboot項目打包的時候,如果maven報錯提示:缺少web.xml

  i>:此時我們需要webapp目錄,該目錄與src/main、src/resource對應,因為maven的web項目默認的webroot是在src\main\webapp

  ii>:在webapp目錄下,創建WEB-INF/web.xml

  這樣才可以打包成功,及時web.xml是空的內容,什么也沒有,但是這樣可以保證maven的打包是成功的

 

2、如果是mvn install沒有將打包后的jar、war放到本地倉庫

我們需要檢查Maven的配置,settings.xml中localRepository最好寫成絕對路徑,如果是相對路徑的話,可能會造成問題:

eg:setting.xml:

<localRepository>../apache-maven-3.3.9/.m2/repository</localRepository>

項目的位置:

D:\Workspace_IDEA\spring-boot-app

我們在spring-boot-app項目下install的話,就有可能不會將打包后的文件放到本地倉庫中去,而是放到了當前位置的上一層目錄,然后創建apache-maven-3.3.9/.m2/repository目錄,將打好的包放進去,

這有可能導致我們通過maven插件啟動springboot項目時候,出錯說找不到依賴

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM