Spring Boot 默认是以 jar 包启动 web 程序。
采用下列步骤 将 Spring Boot 项目生成 war 包。
修改 pom.xml
将
<packaging>jar</packaging>
改为<packaging>war</packaging>
在 dependencies 节点下添加
<!-- 这里指定打包的时候不再需要tomcat相关的包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
说明:provided 表明该jar包只在编译和测试的时候用,在运行阶段将由容器提供,这样部署到 tomcat 的时候不会引起jar冲突。
PS:修改 scope 为 compile ,部署到 Tomcat下也可以正常运行。但是查看生成的 war,lib目录里是有变化的。
修改启动类,新增 ServletInitializer
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Demo2Application.class); } }
重命名生成的 war包
使用maven 生成 war 包,命名以 groupId + artifactId + version ,可以通过在pom.xml 文件的 build 节点,添加
<finalName>项目名</finalName>
,举个栗子:<build> <finalName>项目名</finalName> <plugins> ... </plugins> </build>
访问的时候就需要 加上项目名, http://ip:端口/项目名/其他路径
使用 maven 命令打包
mvn - clean package