一.打成war包
a.pom文件修改
01.首先得确保是web工程
<packaging>war</packaging>
02.【可选项】打包时排除spring-boot-starter-web中内置的tomcat,不写大多数情况也无影响
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
b.启动类修改
#01.继承类
extends SpringBootServletInitializer
#02.重写子方法,加载启动类
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
c.maven打成war包
#注意如果导入了test依赖,不要使其被打包,末尾加-Dmaven.test.skip=true
mvn clean package -Dmaven.test.skip=true
二、tomcat加载war包
01.将war包放在tomcat/webapps目录下
(注,建议改名为"ROOT",这样url中无需输入工程名了,注意代码中是否写死了工程名)
02.启动tomcat,启动tomcat/bin/startup.bat(或startup.sh,sh不显示日志)
03.此时可以访问了(用tomcat端口),tomcat/conf/server.xml可修改端口
04.tomcat日志记录在tomcat/logs目录
- 改成war包后,application.yml里的端口无效
- war项目中new File("./")的相对路径用不了,请使用class.getResource().getPath()代替
可能遇到的问题:
01.tomcat版本过老造成用不来,建议8.5.X版
02.启动日志没报错,但就是访问不了。检查前端页面里是不是把ip、端口、项目名写死了
;
03.linux上jdk版本太高,会导致缺失低版本jdk版本的jar包,根据tomcat日志信息去补充重新打包即可