知识卡片

jar与war打包方式的本质区别

专业/工作 · 624

内容

两种打包格式的根本区别在于是否需要外部Servlet容器:jar格式把嵌入式Servlet容器(如Tomcat)一并打包进去,一条java -jar命令就能独立启动,不依赖部署环境预装任何东西;war格式则假定目标环境已经有Servlet容器,只打包应用本身,交给容器解压并托管运行,因此还需要把内置的嵌入式容器依赖标记为”已提供”(provided)以避免和外部容器冲突。发散:这体现了”自带运行时”与”依赖宿主运行时”两种部署哲学的取舍——前者部署简单、环境一致性有保障,后者能复用已有基础设施集中管理多个应用,但代价是应用与容器版本的兼容性要额外维护。

参考来源

《Spring Boot应用开发实战》第7章《部署与运维》