(1)设置打包方式为war
<groupId>com.sun</groupId>
<artifactId>mydata</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--因为要放入外部的tomcat中,因此更改默认打包方式(jar)为war包-->
<packaging>war</packaging>
<name>mydata</name>
<description>Demo project for Spring Boot</description>
(2)将SpringBoot内置的Tomcat在发布时剔除,provided表示该包只在编译和测试中使用,在发布时去除。而在发布时,此依赖由servlet容器即Tomcat提供。更详细的解释Maven依赖Scope选项详解
PS:不推荐在spring-boot-starter-web直接将tomcat移除,否则需要添加servlet-api依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(3)由于SpringBoot项目没有传统的web.xml文件,因此我们需要在缺少web.xml文件的情况下构建war包,需要添加以下配置。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
(4)更改项目启动类,将之前的启动类删除,新建启动类,继承SpringBootServletInitializer类,重写configure方法,即将启动类交给Servlet容器进行启动。
package com.sun.mydata;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class TMydataApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(TMydataApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TMydataApplication.class);
}
}
(5)使用maven package打包项目,拿到war包。
至此,war包已经打包好了。可以修改前端界面,形成两个不同的war包。
之后需要将war包分别放入不同的Tomcat的webapp中。