1.情景展示
如上圖所示,使用idea打包成功后,使用java命令啟動jar包,並沒有報錯信息,但是通過瀏覽器或者postman卻無法訪問項目相關請求。
2.原因分析
與項目無關,是idea自身的mvn插件自身的bug,使用插件的package命令進行打包時,如果打成jar包的話,將無法在java中正常訪問。
提醒:
如果你的是問題是:項目部署成功,其它正常,html頁面也可以正常訪問,就是無法訪問jsp頁面,我只能告訴你,不用再往下看了!
jsp頁面本質是一個servlet,由tomcat將jsp轉換成servlet.java--》servlet.class-->xx.html(只有在請求的時候才會觸發),所以,只能將項目打成war包,並部署到tomcat上才能訪問得到jsp對應的html頁面!
3.解決方案
回歸原始狀態,使用mvn原生命令,自己手動打包,正所謂:自己動手豐衣足食。
首先,一般人想到的笨方法就是,使用cmd命令打開黑窗口,開始敲命令,其實,在idea中就可以執行cmd命令
遠在天邊近在眼前,它就在這里
點擊這種窗口,我們就可以像在cmd中那樣為所欲為,這樣,我們就可以直接輸入打包命令,省略切換到將要打包的目錄下這一道命令啦
最簡單的打包命令:
mvn clean package
如果想在打包的時候跳過測試環節,就可以這樣:
mvn clean package -Dmaven.test.skip=true
這里強調一點:有人會把mvn install當成是打包命令,雖然,這個命令也可以生成我們所需的包,但是,其實嚴格意義上來說,
mvn install是把項目打成jar包並安裝到本地倉庫;
mvn package才是純粹的打包命令。
一般情況下,到這里就結果了
但有人明明需要的是jar包,結果出來確實war包,尷不尷尬?
首先,看你的項目有沒有指定打包形式,一般而言,如果沒有配置該標簽的話,默認打出來的將是jar包,如果標簽值不是jar,就改成jar
通過maven命令指定生成jar包還是war包,我沒找到,一時半會也想不起來,有知道的請留言;
還有一種情況就是:pom.xml通過profile標簽來配置多個環境,比如:開發環境、測試環境、生成環境等
想要哪個環境生效,就需要激活對應的環境,不然生成的將不會是你所需要的。
還有一種方式更方便:
開發環境打包:mvn clean package -Dmaven.test.skip=true -P dev 測試環境打包:mvn clean package -Dmaven.test.skip=true -P test 生產環境打包:mvn clean package -Dmaven.test.skip=true -P prod
通過命令-p來指定哪個環境生效
拓展:
如何運行jar包(部署項目)?
首先,將要部署的電腦需要安裝jdk或者jre,並且能夠通過命令執行相關java命令;
其次,執行javac命令
javac -jar jar包的絕對路徑或相對路徑
回車,等待即可
另外,生成的日志文件將會伴隨jar包所在目錄
2021-01-06
springboot多模塊項目,通過idea打的jar包,項目可以正常訪問,這還真是挺奇怪的哈。