美文网首页工作办公
maven——jar和war的区别

maven——jar和war的区别

作者: 小胖学编程 | 来源:发表于2019-04-16 07:51 被阅读199次
  1. JavaSE程序可以打包成Jar(J可以理解为Java);
  2. JavaWeb程序可以打包成war(W可以理解为Web),然后将war发布到Tomcat的webapps目录下,Tomcat会在启动时自动解压war包。

1. 什么叫做JAR

JAR(Java Archive,Java归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为J2EE应用程序创建的JAR文件是EAR文件(企业JAR文件)。

jar包的结构

JAR文件的目的是把类和相关的资源封装到压缩的归档文件中。

JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并且可以像编译器和JVM这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

SpringBoot可执行jar包目录结构

1.1 springBoot生成的可执行jar

SpringBoot提供的bootstrap的类是放到包的最外面,比如上面的org.springframework.boot.loader

应用程序的代码则是需要放到BOOT-INF/classes目录下面;然后应用程序依赖的其他的jar包文件需要放到BOOT-INF/lib目录下。当这个jar作为standardalone的程序运行时(没有放到container),SpringBoot会在生成的META-INF/MANIFEST.MF里面将Main-Class设置成org.springframework.boot.loader.JarLauncher,JarLauncher类会创建一个spring自己的ClassLoader: LaunchedURLClassLoader, 这个classloader 会就能通过URL来加载上面BOOT-INF/lib里面所依赖的包,并且通过反射Manifest里面的Start-Class里面定义的类,然后invoke这个类里面的main方法。

2. 什么叫做war包

对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。

war包中的文件按照一定目录结构来组织的。根目录下包含有html/jsp文件,或者包含有这两种文件的目录,另外还有WEB-INF目录。

war包结构

在WEB-INF目录下含有一个web.xml文件和一个classes目录。web.xml是整个应用的配置目录,在classes目录下则包含编译好的servlet和jsp或者servlet所依赖的其他类(如JavaBean。通常这些所依赖的类也可以打包成jar包放在WEB-INF的lib目录下。


WEB-INF结构

war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其/webapps/目录下,然后启动Tomcat,这个包会自动解压,就相当发布。

3. jar包和war包的区别

war包代表了一个WEB程序应用,jar是类的归档文件。

如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,这时可以将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。

jar包和war包的介绍和区别

jar包和war包的结构

SpringBoot的 jar和war

相关文章

  • maven——jar和war的区别

    JavaSE程序可以打包成Jar(J可以理解为Java);JavaWeb程序可以打包成war(W可以理解为Web)...

  • maven的package和install的区别

    maven的package和install的区别: 1、package就是打成可以运行的jar/war包; 2、i...

  • jar与war包的区别和命令

    关于java maven项目的部署,一般需要打包成 jar包或者war包。 jar(java)和war(web)...

  • 部署Spring Boot程序

    一.构建WAR 文件 使用Maven构建项目,获取WAR文件很容易。只需把 元素的值从jar改为war。 war ...

  • jar和war区别

    JavaSE(java基础)程序可以打包成Jar包(J其实可以理解为Java了),而JavaWeb程序可以打包成w...

  • 「Java面试必会」Maven常用命令

    Maven 3种打包方式的区别:mvn package项目打包,在项目target目录下生成编译后的jar或war...

  • Spring Boot 项目的运行模式

    模式类型 IDEA 方式 JAR/WAR 方式 Maven 插件方式 ···maven 插件运行 Spring B...

  • maven项目的聚合、SpringBoot

    1、maven聚合项目 1.1 maven项目的打包方式 maven项目的打包方式:jar、war、pom。默认的...

  • war和jar的区别

    war和jar包的区别 war,包含web模块,是需要放到外部web容器里面,再启动web容器发布的包。以Tomc...

  • jar和war的区别

    JavaSE程序可以打包成Jar包(J其实可以理解为Java了),而JavaWeb程序可以打包成war包(w其实可...

网友评论

    本文标题:maven——jar和war的区别

    本文链接:https://www.haomeiwen.com/subject/mdymwqtx.html