原文:https://my.oschina.net/sdlvzg/blog/1562998
我們都知道springBoot中已經內置了tomcat,是不需要我們額外的配置tomcat服務器的,但是有時這也可能是我們的一個瓶頸,因為如果我們需要對tomcat做集群或者一些優化的話是非常不方便的,所以我們仍然需要將springBoot的項目部署到外在的tomcat中,本文檔主要介紹一下如何將jar包轉換成war包。
第一步、將SpringBoot的項目的打包方式設置為war,修改pom.xml文件如下:
<groupId>org.morecare</groupId> <artifactId>mc-api-system</artifactId> <version>0.0.1-SNAPSHOT</version> <!--由Jar包轉為War包--> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <name>mc-api-system</name> <url>http://maven.apache.org</url>
第二步、移除內嵌的tomcat模塊,以及添加tomcat-servelt-api依賴,但是為了我們在本機測試方便,我們還需要引入它,修改pom.xml文件如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--添加移除內嵌的tomcat模塊--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!--本機測試方便,添加tomcat--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <!--添加移除內嵌的tomcat模塊--> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.39</version> </dependency>
第三步、添加war插件,用來自定義打包以后的war包的名稱
<!-- 自定義war包名稱 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warSourceExcludes>src/main/resources/**</warSourceExcludes> <warName>parent</warName> </configuration> </plugin>
第四步、修改入口方法 繼承一個SpringBootServletInitializer類,並且覆蓋configure方法
package org.morecare; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * Spring Boot啟動類 * @author Administrator */ @SpringBootApplication @ServletComponentScan @MapperScan("org.morecare.*.mapper") public class SystemApplication extends SpringBootServletInitializer { //修改入口方法 繼承一個SpringBootServletInitializer類,並且覆蓋configure方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SystemApplication.class); } public static void main(String[] args) { SpringApplication.run(SystemApplication.class, args); } }
完成以上四步,再通過Maven的打包方法,就可以把項目打包成War包,然后把項目部署到Tomcat下了