Appearance
Day1
war包和jar包的区别
1. JAR 包(Java Archive)
- 用途:主要用于打包 Java SE(Standard Edition)应用程序或库,将多个
.class
文件及相关资源(如图片、配置文件)打包成一个压缩文件,便于存储和传输。 - 文件结构:通常包含编译后的
.class
文件、META-INF
目录(包含MANIFEST.MF
文件)以及其他资源文件。 - 部署方式:可以通过
java -jar
命令直接运行,前提是 JAR 文件中包含了应用程序的入口点(即包含main
方法的类)。
2. WAR 包(Web Application Archive)
用途:专用于打包 Java Web 应用程序,将 Web 应用所需的所有文件(包括 Servlets、JSP、HTML、JavaScript、图片等)打包成一个文件,方便部署到 Web 服务器(如 Tomcat)上。
文件结构
:通常包含以下目录和文件:
WEB-INF/
:存放 Web 应用的配置文件和类文件。
classes/
:存放编译后的.class
文件。lib/
:存放依赖的 JAR 包。web.xml
:Web 应用的部署描述符。
其他静态资源文件,如 HTML、JSP、图片、CSS、JavaScript 等。
部署方式:将 WAR 文件放置在 Web 服务器的
webapps/
目录下,服务器启动时会自动解压并部署该应用。
3. 主要区别
特性 | JAR 包 | WAR 包 |
---|---|---|
用途 | 打包 Java SE 应用或库 | 打包 Java Web 应用 |
包含内容 | 编译后的 .class 文件、资源文件 | Web 应用的所有文件,包括 WEB-INF 目录及其子目录 |
部署方式 | 使用 java -jar 命令直接运行 | 部署到 Web 服务器的 webapps/ 目录下 |
应用场景 | 独立的 Java 应用程序或共享库 | 需要在 Web 服务器上运行的 Web 应用程序 |
4. 主要结构差异总结
- 目录层级:
- JAR 包:通常没有固定的目录结构,主要包含
.class
文件和资源文件,可选META-INF
目录。 - WAR 包:具有严格的目录结构,必须包含
WEB-INF
目录,内部包含classes/
、lib/
和web.xml
等。
- JAR 包:通常没有固定的目录结构,主要包含
- 配置文件:
- JAR 包:一般不包含特定的配置文件,除非应用需要。
- WAR 包:必须包含
web.xml
部署描述符,用于配置 Servlet、过滤器等组件的映射关系。
私有化repo和setting.xml
为什么要用私有repo和setting.xml呢?
1. 使用私有仓库的原因
- 提高构建效率:通过在公司内部搭建私有 Maven 仓库,可以缓存常用的构件,减少每次构建时从远程中央仓库下载的时间,提高构建速度。
- 保障构件安全:一些企业内部的构件可能包含敏感或专有信息,使用私有仓库可以确保这些构件仅在内部网络中传播,防止泄露。
- 定制化管理:私有仓库允许企业根据自身需求管理构件的版本、依赖关系等,确保构建环境的可控性和一致性。
2. 在 settings.xml
中配置私有仓库的原因
- 集中管理仓库信息:
settings.xml
是 Maven 的全局配置文件,通过在其中配置私有仓库的信息,可以统一管理仓库地址、认证信息等,避免在每个项目的pom.xml
中重复配置。 - 保护敏感信息:一些仓库可能需要认证访问,将用户名、密码等敏感信息配置在
settings.xml
中,可以避免将这些信息暴露在项目的pom.xml
中,增强安全性。 - 灵活切换仓库:通过在
settings.xml
中配置不同的仓库镜像和代理设置,可以根据需要灵活切换或添加仓库,满足不同项目的需求。