最近在做一個項目,遇到了項目打成 war 包的一個問題,項目創(chuàng)建時選擇的時 jar 包方式,后因項目部署要求,需要打成 war 包部署,遇到很多坑,在此做一下記錄
一、修改打包方式
原:
1
2
|
< version >0.0.1-SNAPSHOT</ version > < packaging >jar</ packaging > |
改后:
1
2
|
< version >0.0.1-SNAPSHOT</ version > < packaging >war</ packaging > |
二、排除內(nèi)置 Tomcat
原:
1
2
3
4
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > |
改后:
1
2
3
4
5
6
7
8
9
10
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > < exclusions > < exclusion > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-tomcat</ artifactId > </ exclusion > </ exclusions > </ dependency > |
使用 排除內(nèi)置服務(wù)器
三、添加 Tomcat 依賴
用于編譯和測試開發(fā),兩種方式
1、
1
2
3
4
5
6
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-tomcat</ artifactId > <!-- 該包只在編譯和測試的時候使用 --> < scope >provided</ scope > </ dependency > |
2、
1
2
3
4
5
6
7
|
< dependency > < groupId >org.apache.tomcat</ groupId > < artifactId >tomcat-servlet-api</ artifactId > < version >8.5.34</ version > <!-- 該包只在編譯和測試的時候使用 --> < scope >provided</ scope > </ dependency > |
四、改變項目的構(gòu)造方式
原:
1
2
3
4
5
6
7
8
|
< build > < plugins > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > |
改后:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
< build > <!-- 一般為你的項目名,與配置文件中的context-path保持一致 --> < finalName >demo</ finalName > < plugins > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-compiler-plugin</ artifactId > < configuration > < source >${java.version}</ source > < target >${java.version}</ target > </ configuration > </ plugin > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-war-plugin</ artifactId > < configuration > < webResources > < resource > < directory >src/main/resources/lib</ directory > < targetPath >WEB-INF/lib/</ targetPath > < includes > < include >**/*.jar</ include > </ includes > </ resource > </ webResources > </ configuration > </ plugin > </ plugins > </ build > |
五、修改啟動類
啟動類繼承 SpringBootServletInitializer,并實現(xiàn) configure() 方法
原:
1
2
3
4
5
6
7
8
9
10
11
|
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication. class , args); } } |
改后:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication. class ); } public static void main(String[] args) { SpringApplication.run(DemoApplication. class , args); } } |
六、修改配置文件
修改 application.yml 文件,標明項目項目上下文路徑 context-path
1
2
3
|
server: servlet: context-path: /demo |
七、修改靜態(tài)資源引入方式
我們使用 thymeleaf 模板引擎,引入 css、js 文件時,需要加上項目上下文路徑
原:
1
|
< link rel = "stylesheet" href = "layui/css/layui.css" rel = "external nofollow" media = "all" > |
改后:
1
|
< link rel = "stylesheet" th:href = "@{/layui/css/layui.css}" rel = "external nofollow" media = "all" > |
我們需要使用 th:href="@{}" rel="external nofollow" 的方式,去引入靜態(tài)資源文件
八、測試
我們可以不使用項目的啟動類啟動項目,我們自己添加一個服務(wù)器來啟動項目
就想普通的 SSM 項目,添加一個 Tomcat 啟動項目,如果能夠成功啟動項目,并能正常訪問,那么打成 war 包也能夠正常運行
到此這篇關(guān)于SpringBoot中打war包需要注意事項的文章就介紹到這了,更多相關(guān)SpringBoot打war包內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/qq_40065776/article/details/106752325