配置SpringBoot方便的切換jar和war的方法示例
網(wǎng)上關(guān)于如何切換,其實(shí)說(shuō)的很明確,本文主要通過(guò)profile進(jìn)行快速切換已實(shí)現(xiàn)在不同場(chǎng)合下,用不同的打包方式。
jar到war修改步驟
pom文件修改
- packaging配置由jar改為war
- 排除tomcat等容器的依賴(lài)
- 配置web.xml或者無(wú)web.xml打包處理
入口類(lèi)修改
- 添加ServletInitializer
特別注意:當(dāng)改成war包的時(shí)候,application.properties配置的server.port和server.servlet.context-path就無(wú)效了,遵從war容器的安排。
配置pom
配置packaging
<packaging>${pom.package}</packaging>
修改build
<!-- 作用是打war包的時(shí)候,不帶版本號(hào) -->
<finalName>${pom.packageName}</finalName>
<!--加入plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<!--如果想在沒(méi)有web.xml文件的情況下構(gòu)建WAR,請(qǐng)?jiān)O(shè)置為false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
排除容器
<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>
配置profile
<profiles>
<profile>
<!-- 開(kāi)發(fā)環(huán)境 -->
<id>jar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<pom.package>jar</pom.package>
<pom.packageName>${project.artifactId}-${project.version}</pom.packageName>
<pom.profiles.active>dev</pom.profiles.active>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>war</id>
<properties>
<pom.package>war</pom.package>
<pom.packageName>${project.artifactId}</pom.packageName>
<pom.profiles.active>linux</pom.profiles.active>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
</profiles>
修改入口類(lèi)
- 入口類(lèi)繼承SpringBootServletInitializer
- 重寫(xiě)configure方法
使用@Profile注解,當(dāng)啟用war配置的時(shí)候,初始化Servlet。
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Profile(value = {"war"})
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud使用FFmpeg對(duì)視頻壓縮處理的代碼示例
在現(xiàn)代的視頻處理系統(tǒng)中,壓縮視頻以減小存儲(chǔ)空間、加快傳輸速度是一項(xiàng)非常重要的任務(wù),FFmpeg作為一個(gè)強(qiáng)大的開(kāi)源工具,廣泛應(yīng)用于音視頻的處理,包括視頻的壓縮和格式轉(zhuǎn)換等,本文將通過(guò)Java代碼示例,向您展示如何使用FFmpeg進(jìn)行視頻壓縮,并介紹相關(guān)參數(shù)的設(shè)置2024-11-11
Java?GenericObjectPool?對(duì)象池化技術(shù)之SpringBoot?sftp?連接池工具類(lèi)詳解
這篇文章主要介紹了Java?GenericObjectPool?對(duì)象池化技術(shù)之SpringBoot?sftp?連接池工具類(lèi)詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
JSONObject如何轉(zhuǎn)為實(shí)體類(lèi)對(duì)象
介紹了JSONObject轉(zhuǎn)為實(shí)體類(lèi)對(duì)象的三種方法:JSONObject中的toJavaObject方法和getObject方法支持深轉(zhuǎn)換,而JSON中的parseObject方法只能轉(zhuǎn)換一層對(duì)象,此外,還補(bǔ)充說(shuō)明了在對(duì)JSON轉(zhuǎn)為實(shí)體類(lèi)對(duì)象時(shí),無(wú)論JSON中的數(shù)據(jù)字段是否多于或少于實(shí)體類(lèi)中字段,轉(zhuǎn)化都不會(huì)報(bào)錯(cuò)2024-11-11
MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤(pán)
這篇文章主要介紹了MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤(pán),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
一次由Lombok的@AllArgsConstructor注解引發(fā)的錯(cuò)誤及解決
這篇文章主要介紹了一次由Lombok的@AllArgsConstructor注解引發(fā)的錯(cuò)誤及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java中的有限狀態(tài)機(jī)(設(shè)計(jì)模式——狀態(tài)模式)
這篇文章主要介紹了Java中的有限狀態(tài)機(jī)(設(shè)計(jì)模式——狀態(tài)模式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

