Java 中的 jar 包和 war 包
jar 包
简单地说,JAR(Java Archive)是一种包文件格式。JAR 文件具有 .jar 扩展名,可以包含库、资源和元数据文件。
本质上,它是一个压缩文件,包含压缩版本的.class文件和编译后的Java库和应用程序的资源。
例如,下面是一个简单的 JAR 文件结构:
META-INF/
MANIFEST.MF
com/
baeldung/
MyApplication.class
其中,在 META-INF/manifest.mf 文件小红可能包含有关存档中存储的文件的其他元数据。
我们可以使用 jar 命令或 maven 等工具来创建jar文件。
war 包
war 代表 Web 应用程序存档或 Web 应用程序资源。这些存档文件具有 .war 扩展名,用于打包我们可以部署在任何 servlet/jsp 容器上的 Web 应用程序。
下面是一个典型的WAR文件结构的布局示例:
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
jsp/
helloWorld.jsp
classes/
static/
templates/
application.properties
lib/
// *.jar files as libs
在内部,它有一个 META-INF 目录,在 manifest.mf 中保存着关于 web 存档的的有用信息。META-INF 目录是私有的,无法从外部访问。
另一方面,它还包含 WEB-INF 公共目录,其中包含所有静态 Web 资源,包括 HTML 页面、图像和 JS 文件。此外,它还包含 web.xml 文件、servlet 类和库。
我们可以使用与构建 JAR 时相同的工具和命令来构建 war 文件。
jar 包和 war 包的区别
- 文件扩展名不同
- 目的和运作方式不同
- 文件的结构也不同
JAR 具有 .jar 扩展名,而 WAR 文件具有 .war 扩展名。
JAR 文件允许我们打包多个文件,以便将其用作库,插件或任何类型的应用程序。另一方面,WAR 文件仅用于 Web 应用程序,一个 war 包可以理解为是一个 web 项目,里面是项目的所有东西。
我们可以创建具有任何所需结构的 JAR 。相比之下,WAR 具有 WEB-INF 和 META-INF 目录的预定义结构。
转载:https://blog.csdn.net/Pranuts_/article/details/101786186