1、在SpringBoot中默認支持Tomcat容器,所以當一個SpringBoot項目打包生成*.jar文件,並且直接執行的時候就會自動啟動內部的Tomcat容器。除了此種模式之外,也可以將Web項目打包為*.war文件,采用部署的形式通過Tomcat進行發布處理,這種方式和傳統模式比較類似,打成war包丟到tomcat里面進行運行。
2、在將SpringBoot打包為*.war文件的時候,如果想正常部署一定要注意以下兩點:
第一點:是取消項目中的Jetty容器的配置。
第二點:是將所有的源文件夾目錄設置輸出資源,修改父pom.xml中的<resource>配置。千萬注意,創建WEB-INF/web.xml配置文件,不然會提示報錯的哦。
3、開始修改pom.xml配置文件,將程序的打包類型定義為*.war,修改pom.xml配置文件,追加war文件打包插件。
1 <?xml version="1.0"?> 2 <project 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 4 http://maven.apache.org/xsd/maven-4.0.0.xsd" 5 xmlns="http://maven.apache.org/POM/4.0.0" 6 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 7 <modelVersion>4.0.0</modelVersion> 8 9 <parent> 10 <groupId>com.bie</groupId> 11 <artifactId>springboot-base</artifactId> 12 <version>0.0.1-SNAPSHOT</version> 13 </parent> 14 15 <!-- 父項目已經指定,這里可以省略 --> 16 <!-- <groupId>com.bie</groupId> --> 17 <artifactId>springboot-tentent</artifactId> 18 <!-- <version>0.0.1-SNAPSHOT</version> --> 19 <name>springboot-tentent</name> 20 <url>http://maven.apache.org</url> 21 <!-- 將Springboot項目打包成war包的形式 --> 22 <packaging>war</packaging> 23 24 <properties> 25 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 26 </properties> 27 28 <dependencies> 29 <dependency> 30 <groupId>org.springframework.boot</groupId> 31 <artifactId>spring-boot-starter-web</artifactId> 32 </dependency> 33 <dependency> 34 <groupId>org.springframework.boot</groupId> 35 <artifactId>spring-boot-starter-test</artifactId> 36 <scope>test</scope> 37 </dependency> 38 <dependency> 39 <groupId>junit</groupId> 40 <artifactId>junit</artifactId> 41 <scope>test</scope> 42 </dependency> 43 <dependency> 44 <groupId>org.springframework.boot</groupId> 45 <artifactId>spring-boot-starter-jetty</artifactId> 46 </dependency> 47 </dependencies> 48 49 <build> 50 <plugins> 51 <!-- 該插件的主要功能是進行項目的打包發布處理 --> 52 <plugin> 53 <groupId>org.springframework.boot</groupId> 54 <artifactId>spring-boot-maven-plugin</artifactId> 55 <!-- 設置程序執行的主類 --> 56 <configuration> 57 <mainClass>org.springboot.tentent.Springboot01Application</mainClass> 58 </configuration> 59 <executions> 60 <execution> 61 <goals> 62 <goal>repackage</goal> 63 </goals> 64 </execution> 65 </executions> 66 </plugin> 67 <plugin> 68 <groupId>org.apache.maven.plugins</groupId> 69 <artifactId>maven-war-plugin</artifactId> 70 <configuration> 71 <!-- 打包后的war文件名稱 --> 72 <warName>springboot-tentent</warName> 73 </configuration> 74 </plugin> 75 </plugins> 76 <resources> 77 <resource> 78 <directory>src/main/resources</directory> 79 <includes> 80 <include>**/*.properties</include> 81 <include>**/*.yml</include> 82 <include>**/*.xml</include> 83 <include>**/*.tld</include> 84 </includes> 85 <filtering>false</filtering> 86 </resource> 87 <resource> 88 <directory>src/main/java</directory> 89 <includes> 90 <include>**/*.properties</include> 91 <include>**/*.xml</include> 92 <include>**/*.tld</include> 93 </includes> 94 <filtering>false</filtering> 95 </resource> 96 </resources> 97 </build> 98 99 100 </project>
修改完pom.xml文件之后,更新項目會報錯提示缺少web.xml配置文件,此時創建一個web.xml配置文件即可。
如果現在項目要以Tomcat的形式運行,那么需要修改SpringBoot程序啟動類定義,該類必須要繼承SpringBootServletInitializer父類,同時還需要覆寫configure()方法。
1 package org.springboot.tentent; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.boot.builder.SpringApplicationBuilder; 6 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 7 8 @SpringBootApplication // 啟動Springboot程序,自帶子包掃描 9 public class Springboot01Application extends SpringBootServletInitializer { 10 11 @Override 12 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 13 // 配置Springboot的應用環境 14 SpringApplicationBuilder sources = builder.sources(Springboot01Application.class); 15 return sources; 16 } 17 18 public static void main(String[] args) { 19 SpringApplication.run(Springboot01Application.class, args); 20 } 21 22 }
對項目進行打包部署(clean package),成功之后會在target目錄中形成xxx.war程序文件,隨后可以將此文件直接復制到Tomcat所在目錄之中,而后啟動Tomcat進行項目發布。
生成的xxx.war包在target目錄下面,由於我的使用的maven創建父子工程,所以生成了兩個,如下所示:
此時可以將此文件直接復制到Tomcat所在目錄(apache-tomcat-8.5.34\webapps)之中,而后啟動Tomcat進行項目發布。