SpringBoot中打war包需要注意事項
最近在做一個項目,遇到了項目打成 war 包的一個問題,項目創(chuàng)建時選擇的時 jar 包方式,后因項目部署要求,需要打成 war 包部署,遇到很多坑,在此做一下記錄
一、修改打包方式
原:
<version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>
改后:
<version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>
二、排除內(nèi)置 Tomcat
原:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
改后:
<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、
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- 該包只在編譯和測試的時候使用 --> <scope>provided</scope> </dependency>
2、
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.5.34</version> <!-- 該包只在編譯和測試的時候使用 --> <scope>provided</scope> </dependency>
四、改變項目的構(gòu)造方式
原:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
改后:
<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() 方法
原:
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);
}
}
改后:
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 文件,標(biāo)明項目項目上下文路徑 context-path
server: servlet: context-path: /demo
七、修改靜態(tài)資源引入方式
我們使用 thymeleaf 模板引擎,引入 css、js 文件時,需要加上項目上下文路徑
原:
<link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" media="all">
改后:
<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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea2019導(dǎo)入maven項目中的某些問題及解決方法
這篇文章主要介紹了idea2019導(dǎo)入maven項目中的某些問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Java中的StackOverflowError錯誤問題及解決方法
這篇文章主要介紹了Java中的StackOverflowError錯誤,在本文中,我們仔細(xì)研究了StackOverflower錯誤,包括Java代碼如何導(dǎo)致它,以及我們?nèi)绾卧\斷和修復(fù)它,需要的朋友可以參考下2022-07-07
SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼
這篇文章主要介紹了SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Java concurrency集合之ConcurrentSkipListSet_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

