默认场景下,Springboot作为一个jar运行,但是在某些特殊场景下 需要将后台和其他应用共用一个web容器(tomcat之类);
客户强制要求(例如策略只给了一个端口);
其他;
可以打包成war文件进行发布。
分步指南
一般情况下,将springboot工程打包为war分为以下几个步骤:
修改pom.xml,将打包方式设置为war 修改jar为war
移除springboot默认的tomcat配置
移除默认的spring-boot-starter-tomcat,使用provided
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
添加tomcat-servelt-api依赖
*注意根据自己的情况修改version
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
修改启动方法
增加configure配置
@SpringBootApplication
public class ServerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ServerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
添加打包插件
在pom.xml的build > plugins 中添加打包插件,可以指定打包的名称等配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>src/main/resources/**</warSourceExcludes>
<warName>yehuo</warName>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
修改项目的context-path与warName一致 修改application.properties的context-path和port等信息和实际部署的情况改为一致
server.port=server.context-path=yehuo
相关文章
暂无评论...