引言
在实际开发中,通常会使用Spring boot 打包方式为war包,并部署在远程tomcat服务器上。
一、修改 pom文件
1)将打包方式修改为war
2) 指定最终打成war包的名称(最好与application.properties(或application.yml)中context-path保持一致)
3)打包时,去掉tomcat依赖
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--排除spring-boot-starter-web中的Tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>war包名称</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
二、修改主启动类
Spring Boot 程序入口类需继承 SpringBootServletInitializer 类 并重写 configure 方法。
@SpringBootApplication
public class SpringBootDemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootDemoApplication.class); //参数为当前SpringBoot启动类 并且构造新资源
}
}
三、打包
可以通过maven进行打包war包到本地
四、部署
将war包放入tomcat下的webapps目录下,然后启动tomcat。
五、注意
使用外部Tomcat部署访问的时候,application.yml / application.properties 中配置的端口和上下文路径将失效,请使用tomcat的端口,tomcat中的webapps下项目名进行访问。
因为war部署的时候 tomcat默认将你的根路径变成你的war包的名称;即我们在访问时,地址为 http:/localhost:8080/war包名称/