<packaging>jar</packaging>和<packaging>pom</packaging>的区别

embedded/2024/12/30 14:12:54/

在Maven项目中,<packaging> 元素在 pom.xml 文件中定义了项目打包的方式。<packaging> 的值决定了构建过程中生成的构件类型。以下是 <packaging>jar</packaging><packaging>pom</packaging> 两种最常见的打包类型的区别:

jarpackaging_2"><packaging>jar</packaging>

  1. 默认打包类型

    • 如果在 pom.xml 中没有指定 <packaging> 元素,Maven 默认使用 jar 作为打包类型。
  2. 生成的构件

    • <packaging> 设置为 jar 时,Maven 会构建一个 JAR 文件,其中包含了编译后的 Java 类文件、资源文件以及项目的元数据。
  3. 使用场景

    • 这是大多数Java应用程序和库使用的打包类型,特别是那些需要被其他项目作为依赖的项目。

<packaging>pom</packaging>

  1. POM 聚合

    • <packaging> 设置为 pom 时,该项目实际上并不构建任何可执行的构件(如 JAR 文件),而是作为一个聚合(或称为父)POM 使用。
  2. 生成的构件

    • pom 打包类型的项目通常会生成一个 POM 文件,这个文件包含了项目的所有坐标和依赖信息,但不包含任何编译后的代码或资源。
  3. 使用场景

    • 这种类型的项目通常用作多模块项目的父项目,用于管理子模块的共同配置和依赖。
    • 它们也可以用于定义特定的构建环境或部署配置,而不实际生成可执行的构件。

区别

  • 构件类型jar 生成的是 JAR 文件,而 pom 生成的是 POM 文件。
  • 构建结果jar 打包类型会生成包含编译代码的 JAR 文件,而 pom 打包类型不会生成任何可执行的构件。
  • 依赖管理jar 打包类型的项目可以被其他项目作为依赖,而 pom 打包类型的项目通常不作为依赖,而是作为父项目来管理子项目。
  • 模块化pom 打包类型的项目常用于模块化的构建系统,其中父项目定义了共同的构建逻辑和依赖管理。

简而言之,<packaging>jar</packaging> 用于生成可执行的 JAR 文件,而 <packaging>pom</packaging> 用于创建聚合项目,它们不生成可执行构件,而是用于管理和聚合其他模块或项目。


http://www.ppmy.cn/embedded/149722.html

相关文章

Mooncake:kimi后端推理服务的架构设计

前言 本文依托论文《Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving》来讲解kimi的后端服务架构Mooncake,并按照自己的思路来梳理论文中的一些关键信息。 背景 服务端面临的问题 随着大模型技术越来越强,很多应用都是以Maas(Model as a Service…

如何使用 Firewalld 设置 Linux 防火墙

简介 在 Linux 中&#xff0c;防火墙是一个应用程序或服务&#xff0c;它使用预定的规则集来过滤或控制进出 Linux 服务器的网络流量。通常将防火墙配置为允许所需的流量通过&#xff0c;同时阻止其余的外部流量。 Firewalld 是一个用于 Linux 系统的防火墙管理解决方案。它是…

vulhub-wordpress靶场

一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录&#xff0c;把它拖出来 点开moban目录后&#xff0c;创建…

不用swipe插件,用<component>组件实现H5的swipe切换

不引入 swipe 插件&#xff0c;使用vue自带组件实现swipe滑动切换页面功能 需求场景1. 引入组件2. 动态加载页面组件3. 使用component组件4. 组件属性及相关事件5. 触摸事件处理6. 动画和过渡控制7. 节流功能 完整代码 需求场景 不引入 swipe 插件&#xff0c;使用vue自带comp…

详细讲解axios封装与api接口封装管理

一、axios封装 axios是基于promise的http客户端&#xff0c;用于浏览器和nodejs发送http请求 &#xff0c;对它进行封装主要是为了统一管理请求配置和处理请求和响应的通用逻辑等。以下是常用的封装逻辑和要点 1&#xff1a;引入axios相关依赖 首先引用项目中的axios库&…

【JavaEE】Spring Web MVC

目录 一、Spring Web MVC简介 1.1 MVC简介1.2 Spring MVC1.3 RequestMapping注解1.3.1 使用1.3.2 RequestMapping的请求设置 1.3.2.1 方法11.3.2.2 方法2 二、Postman介绍 2.1 创建请求2.2 界面如下&#xff1a;2.3 传参介绍 一、Spring Web MVC简介 官方文档介绍&#xff…

设计模式之模板方法模式:咖啡,茶,和代码

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、模板方法模式概述 \quad 在我们的日常生活中,经常会遇到这样的场景:不同的事物,却有着相似的处理流程。比如泡茶和冲咖啡,虽然最终的饮品不同…

用 ElementUI 的日历组件 Calendar 自定义渲染

文章目录 需求分析1. 页面渲染2. 获取页面上的开始日期和结束日期3. 总的代码 需求 之前实现过一版用 ElementPlus 的日历组件 Calendar 自定义渲染&#xff0c;是在 Vue3 项目中实现的&#xff0c;现在需求在 Vue2 中也实现一版 分析 1. 页面渲染 <el-calendar v-model&q…