一、将项目打包成war格式,修改pom.xml
1、在其中添加下列代码
<packaging>war</packaging>
2、检查是否有这两个插件, maven-war-plugin 和 spring-boot-maven-plugin
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> </plugin> </plugins> <!-- 打包成的项目名--> <finalName>tomcattest</finalName> </build>
3、点击右侧的package打包成 war 包,在项目的target目录可以看到生成的war包
4、打开cmd,到war 包所在目录 运行命令,项目可以正常启动并能成功访问。
java -jar tomcattest.war
5.发布到外部的tomcat
把tomcattest.war放到tomcat下的webapp下,重启tomcat,再次访问发现访问不到,报404错误。
6、解决当前这个在外部tomcat没办法运行起来并访问的问题,方法是修改启动类。
让项目启动类SpringBootStartApplication 继承自 SpringBootServletInitializer
说明:
A.在外部容器部署的话,不能依赖于Application的main函数
B.在启动类中继承SpringBootServletInitializer并实现configure方法,以类似于web.xml文件配置的方式来启动Spring应用上下文
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 TomcattestApplication extends SpringBootServletInitializer { @Override public SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) { return applicationBuilder.sources(TomcattestApplication.class); } public static void main(String[] args) { SpringApplication.run(TomcattestApplication.class, args); } }
7、再次打包发布到外部的tomcat。成功访问。
8、完结散花!
参考:
https://blog.csdn.net/weixin_34067102/article/details/86003918
IntelliJ IDEA Sringboot 项目部署到外部Tomcat服务器 - 南下玩技术 - 博客园 (cnblogs.com)