如何在idea利用maven把tomcat发布到外部tomcat提出内嵌的版本?
发布日期:2021-05-06 19:51:46 浏览次数:17 分类:技术文章

本文共 1814 字,大约阅读时间需要 6 分钟。

说明

  1. 如何在idea下利用maven打包war包
  2. 如何在发布war包到外部tomcat容器时,剔除内嵌的tomcat(否则404)
  3. 在本地idea执行时用内嵌的tomcat,当打包时剔除内嵌tomcat,这样才完美

操作1 idea下利用maven打包war包

war
org.springframework.boot
spring-boot-maven-plugin
ROOT
  1. 引入maven打包插件
  2. 配置packaging标签,这里war表示打包成war包。jar表示打包成jar包。
  3. 指定生成war包的名字,finalName指定名字
  4. clean + install 打包(idea右侧有maven工具栏)
    在这里插入图片描述

打包好后,在项目target目录下生成xx.war包。默认包含内嵌tomcat,所以可以通过java -jar xx.war命令直接运行服务。但缺点在于,如果放到独立的tomcat中可以正常启动,但是无法访问路径,报404错误。

操作2 打包时剔除内嵌的tomcat

step1 编写一个ApiServletInitializer 类copy下面内容。xxxxx代表你的启动类名

import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/** * web容器中进行部署 * * @author bian */public class ApiServletInitializer extends SpringBootServletInitializer{    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)    {        return application.sources(xxxxx.class);    }}

step2 pom文件中添加如下内容

org.springframework.boot
spring-boot-starter-tomcat
provided

然后打包时就可以剔除tomcat

操作3 在本地idea执行时用内嵌的tomcat,当打包时剔除内嵌tomcat

经测试操作2中只做step1即可,即只需添加下面的类到服务即可。我在springboot2.0中验证,可以保持两者兼得。

import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/** * web容器中进行部署 * * @author bian */public class ApiServletInitializer extends SpringBootServletInitializer{    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)    {        return application.sources(xxxxx.class);    }}

总结

时代在变化,可以用最简单的方式解决问题

上一篇:HTTP协议(1)_入门的一些教程和资源
下一篇:如何理解IP地址、子网掩码、网管gateway?不讲大道理

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月30日 08时12分15秒