Skip to content

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 包:一般不包含特定的配置文件,除非应用需要。
    • 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 中配置不同的仓库镜像和代理设置,可以根据需要灵活切换或添加仓库,满足不同项目的需求。