SpringBoot配置jar打包和war打包过程
在Spring Boot项目中,可以通过修改pom.xml文件来配置项目打包成JAR或WAR文件。Spring Boot应用默认打包成可执行的JAR文件,但如果想要将其打包成WAR文件以便部署到传统的Servlet容器中(如Tomcat),需要做一些额外的配置。
打包成JAR
对于大多数Spring Boot应用来说,默认配置(即不打任何特殊配置)就会生成一个可执行的JAR文件。这个JAR文件包含了应用的所有依赖、类文件、资源文件以及一个嵌入式的Servlet容器(如Tomcat、Jetty或Undertow)。
如果想要确认或确保应用是打包成JAR文件,可以检查pom.xml文件中的<packaging>标签是否设置为jar(这通常是默认的):
<packaging>jar</packaging>
打包成WAR
如果想要将Spring Boot应用打包成WAR文件,以便部署到外部的Servlet容器中,需要做以下几步配置:
1. 修改<packaging>为war
在pom.xml文件中,将<packaging>标签的值从jar改为war。
<packaging>war</packaging>
2. 排除内置的Servlet容器
由于WAR文件将部署到一个外部的Servlet容器中,需要从项目的依赖中排除内置的Servlet容器(如Tomcat、Jetty)。这可以通过在pom.xml中添加<exclusions>来实现。
对于Tomcat,可以添加如下配置到你的spring-boot-starter-web依赖中(或者任何包含嵌入式Servlet容器的starter):
<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>注意:如果使用的是其他嵌入式Servlet容器(如Jetty或Undertow),需要排除相应的starter。
3.配置Spring Boot的主类
当打包成WAR文件时,Spring Boot不会自动运行主类(即带有@SpringBootApplication注解的类)。相反,需要创建一个继承自SpringBootServletInitializer的类,并重写configure方法来指定Spring Boot的主类。
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(YourSpringBootApplication.class);
}
}将YourSpringBootApplication替换为主类名。
4.(可选)配置Servlet容器
如果使用的是特定的Servlet容器(如Tomcat),并且需要对其进行额外的配置,可能需要在pom.xml中添加相应的Servlet容器依赖,并确保它的版本与Servlet容器版本兼容。然而,在大多数情况下,这一步是可选的,因为大多数Servlet容器都会自动处理这些配置。
5.构建项目
在命令行中,使用Maven的package命令来构建你的项目:
mvn clean package
这将生成一个WAR文件,可以将其部署到任何支持Servlet 3.0的容器中。
注意:
将Spring Boot应用打包成WAR文件并不是Spring Boot推荐的部署方式,因为Spring Boot的设计初衷是为了简化部署和配置。然而,如果有特殊的需求(如与现有系统集成),将应用打包成WAR文件可能是一个可行的选择。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring 整合Shiro 并扩展使用EL表达式的实例详解
Shiro是一个轻量级的权限控制框架,应用非常广泛。本文的重点是介绍Spring整合Shiro,并通过扩展使用Spring的EL表达式。需要的朋友可以参考下2018-03-03
Spring Security 中如何让上级拥有下级的所有权限(案例分析)
这篇文章主要介绍了Spring Security 中如何让上级拥有下级的所有权限,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析
这篇文章主要介绍了Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析,需要的朋友可以参考下。2017-09-09
spring 中事务注解@Transactional与trycatch的使用
这篇文章主要介绍了spring 中事务注解@Transactional与trycatch的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06


最新评论