1.在pom.xml里设置 <packaging>war</packaging>
2.去除内置tomcat
<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>
<!--添加servlet的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
3.修改启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在Application类的同级添加一个SpringBootStartApplication类,其代码如下:
/**
* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(Application.class);
}
}
接着可以打包了:
打包好会生成以为xxx.war的文件,在你项目target文件里
以下是部署配置tomcat的操作
第一步把打包好的war包 放到 tomcat目录下的webapps 下
截图:
第二步:找到tomcat目录下的server.xml配置文件
server.xml在conf文件夹下面
编辑server.xml,将下图位置的8080端口更改为80
我这里已经改成80了
第三步:
将Host中的name更改成要设置的域名或IP地址,本例中设置了如下域名,此外,我们还需要在Host下配置一个Context用于指定应用的运行环境。其中:
1. docBase(Document Base)为应用相对于webapps的路径,如果将docBase设置为Web应用名称(本例为demo),则在Url地址中就可以不用输入项目名称了;
2. path为应用的上下文路径,如果默认为空则表明当前Context为默认Context;
3. reloadable默认为false,表明是否监听/WEB-INF/classes/以及/WEB-INF/lib目录的变化,应用在开发阶段可以将其设置为true,但是上生产环境时最好设置为false,否则会占用较大的虚拟机资源影响应用性能。