我们运行springboot2的项目,都是打包成一个jar包然后用自带的tomcat启动,简单明了,但是如果要修改jar包中的一些页面就得重新打包,所以有时候我们想要将springboot2的应用发布到tomcat容器中,其实很简单,步骤如下:
1、pom.xml中把项目类型改为war
<modelVersion>4.0.0</modelVersion><groupId>com.suibibk</groupId><artifactId>testtomcat</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging>
2、排除自带的tomcat
<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>
3、pom.xml中加入tomcat好本地调试
<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><scope>provided</scope></dependency>
provided表示只在本地调试起作用
4、修改启动类
@SpringBootApplicationpublic class App extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(App.class);}public static void main(String[] args) {SpringApplication.run(App.class, args);}}
改为继承SpringBootServletInitializer
5、修改tomcat的server.xml指定端口
<Service name="Catalina"><Connector port="8082" protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/><Engine name="Catalina" defaultHost="localhost"><Host name="localhost" appBase="webapps"><Context docBase="testtomcat" path="" reloadable="true" /></Host></Engine></Service>
6、完成,下面提供完整的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.suibibk</groupId><artifactId>testtomcat</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version></parent><dependencies><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><!-- jsp的话还需要tomcat的支持 ,自带的tomcat不支持--><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><scope>provided</scope></dependency></dependencies><build><finalName>testtomcat</finalName><plugins><!-- 可以将项目打包成可执行jar包 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
