Maven的三种项目打包方式——pom,jar,war的区别

ops/2025/2/11 14:09:43/

Maven 是一个强大的项目管理和构建工具,广泛应用于Java项目的构建和管理。Maven 支持多种打包方式,其中最常用的三种是 pom、jar 和 war。理解这三种打包方式的区别,对于正确配置和管理项目至关重要。本文将详细解释这三种打包方式的用途、特点及其区别。

pom 打包方式

用途

pom(Project Object Model)打包方式主要用于父项目或聚合项目。这种类型的项目本身不生成任何可执行文件,它用于定义项目的结构、依赖关系和模块化管理。

特点
  • 父项目:用于定义一组共享的构建配置和依赖管理。子项目可以继承这些配置,避免重复配置。
  • 聚合项目:用于管理多个模块的构建,可以一次性构建和发布多个模块。
示例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>module-a</module><module>module-b</module></modules>
</project>
​

jar 打包方式

用途

jar(Java ARchive)打包方式用于生成Java类库或可执行的Java应用程序。它将项目中的所有class文件、资源文件打包成一个JAR文件,便于分发和使用。

特点
  • 类库:通常用于打包成Java类库,供其他项目依赖使用。
  • 可执行应用程序:可以包含一个Main类,通过配置Manifest文件中的 Main-Class属性,使其成为可执行JAR文件。
示例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>library-project</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!-- 项目依赖 --></dependencies>
</project>
​

war 打包方式

用途

war(Web Application ARchive)打包方式用于生成Java Web应用程序的部署包。它将项目中的所有Web资源文件、class文件和依赖的JAR文件打包成一个WAR文件,便于部署到Servlet容器(如Tomcat、Jetty)。

特点
  • Web应用程序:包含WEB-INF目录,存放web.xml、class文件和依赖的JAR文件。
  • 直接部署:WAR文件可以直接部署到Servlet容器中,方便进行Web应用的发布和管理。
示例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>web-project</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><!-- 项目依赖 --></dependencies>
</project>
​

http://www.ppmy.cn/ops/157225.html

相关文章

【Flink快速入门-8.Flink Flink 架构介绍】

Flink 架构介绍 实验介绍 经过前⾯的⼏个实验&#xff0c;相信⼤家已经对 Flink 有了⼀定的认识。但是在学习⼀个技术框架 的时候&#xff0c;除了 API &#xff0c;我们还必须了解其架构体系&#xff0c;这样我们才会对它有一个更加全面的认识。所以本节实验我们重点来学习 …

Spring Boot常见面试题总结

1. Spring Boot基础 Q1: Spring Boot是什么&#xff1f;它的优点有哪些&#xff1f; Spring Boot是简化Spring应用开发的框架&#xff0c;提供自动配置、内嵌服务器、starter依赖等。优点包括快速搭建、约定优于配置、减少XML配置、集成生态丰富。 Q2: SpringBootApplication注…

ES6具体有什么

在 ES6&#xff08;ECMAScript 2015&#xff09; 中&#xff0c;引入了许多新的特性和改进&#xff0c;旨在提升 JavaScript 的可读性和功能性。以下是一些重要的 ES6 特性&#xff0c;特别是你可能会在日常开发中使用到的&#xff1a; 1. let 和 const let&#xff1a;用于声…

如何精确掌控网页布局?深入解析 CSS 样式与盒模型

系列文章目录 01-从零开始学CSS选择器&#xff1a;属性选择器与伪类选择器完全指南 02-避免样式冲突&#xff1a;掌握CSS选择器优先级与层叠规则的终极指南 03-如何精确掌控网页布局&#xff1f;深入解析 CSS 样式与盒模型 文章目录 系列文章目录前言一、CSS 样式基础1.1 字体…

【算法】【高精度】acwing算法基础 794. 高精度除法

题目 给定两个非负整数&#xff08;不含前导 0&#xff09; A&#xff0c;B&#xff0c;请你计算 A/B 的商和余数。 输入格式 共两行&#xff0c;第一行包含整数 A&#xff0c;第二行包含整数 B。 输出格式 共两行&#xff0c;第一行输出所求的商&#xff0c;第二行输出所求余数…

使用OBS推流,srs服务器播放

说明&#xff1a; ffmpeg可以推流&#xff0c;但是是命令行方式不太友好&#xff0c;还可以使用主流的OBS开源推流软件&#xff0c;可从官网Open Broadcaster Software | OBS 下载最新版本&#xff0c;目前很多网络主播都是用它做直播。该软件支持本地视频文件以及摄像头推流。…

使用wpa_supplicant和wpa_cli 扫描wifi热点及配网

一&#xff1a;简要说明 交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产&#xff0c;如果知道需要连接的wifi热点及密码的话不需要遍历及查询所有wifi热点的名字及信号强度等信息的话&#xff0c;使用wpa_supplicant即可&#xff0c;否则还需要使用wpa_…

活动预告 |【Part 1】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课&#xff0c;掌握创造新机遇所需的技能&#xff0c;加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动&#xff0c;了解如何更好地在 Microsoft 365 Defen…