Maven 的 <packaging>pom</packaging> 都有哪些值

Maven 的 pom 都有哪些值

在 Maven 中,<packaging> 标签用于定义项目的打包类型,它决定了项目最终构建的输出类型、默认生命周期阶段以及使用的构建插件。Maven 支持多种打包方式,以下是常见的 <packaging> 值及其具体用途:

1. jar(默认值)

这是 Maven 最基础的打包类型。构建后会生成一个 .jar 文件,包含编译后的 .class 字节码文件和资源文件。它通常用于普通的 Java 类库、工具组件,或者作为独立运行的 Java 应用程序(如 Spring Boot 微服务项目)。

2. pom

当项目仅作为其他项目的父 POM 或聚合项目时使用。这种类型的项目本身不包含任何实际代码,也不会生成可执行文件或二进制库。它主要用于定义一组共享的配置、依赖关系和插件设置,其子模块可以继承这些配置。

3. war

专用于 Java Web 应用程序。构建后会生成一个 .war 文件,除了包含 Java 类和资源外,还必须包含 WEB-INF 目录(含 web.xml 等配置文件)以及前端 Web 资源(如 HTML、JSP、CSS 等)。该文件需要部署到 Servlet 容器(如 Tomcat、Jetty)中运行。

4. ear

用于企业级 Java 应用程序(Java EE)。EAR(Enterprise Archive)文件是一个包含多个模块(如 EJB JARs、WARs、RARs 等)的归档文件,适合复杂的多层应用架构。构建后生成 .ear 文件,通常需要部署到全功能的 Java EE 应用服务器(如 WildFly、WebLogic)。

5. maven-plugin

用于创建自定义的 Maven 插件。这些插件打包后可以在其他 Maven 项目中被引用,以执行特定的自定义构建任务。

6. ejb

用于企业 JavaBean(EJB)组件。这是一种服务器端组件模型,主要用于构建分布式业务应用。构建后虽然也生成 .jar 文件,但其内部结构和包含的描述符文件与普通 JAR 包有所不同。

7. bundle

与 OSGi(Open Service Gateway initiative)规范兼容的 JAR 包。这类包通常带有额外的元数据,以支持模块化和服务的动态加载。

除了上述核心打包值外,Maven 还支持 rar 等其他类型。如果在 POM 文件中没有显式声明 <packaging> 标签,Maven 会默认将其视为 jar 包。


你是在写父 POM 吗?如果是的话,我可以给你一份完整的父 POM 配置示例,方便你直接复制使用。

相关推荐
guodingdingh42 分钟前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯2 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育3 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵3 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔4 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影5 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Miao121316 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔6 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城7 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience8 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu