[Spring Boot]03 Maven常用的打包(packaging)类型

2023-11-03

什么是pom.xml

POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的一个XML文件:pom.xml。此文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的继承和依赖关系等等。在Maven项目中,必须包含pom.xml文件。

Maven常用的打包类型

Maven项目常用的打包类型分为:jar、war、pom等类型。
默认打包类型为: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">
  ...
  <packaging>jar</packaging>
  ...
</project>

jar

1、jar文件(扩展名为.jar,Java Application Archive)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等。
2、jar包是java打的包,一般只包括一些编译后class文件和一些部署文件,在声明了Main_class之后是可以用java命令运行的。
3、jar包通常是开发时要引用通用类,打成包便于存放管理。
4、常用于内部、接口、服务部署等。

war

1、war文件(扩展名为.war,Web Application Archive)包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对war文件进行封装,并把它作为小型服务程序(servlet)来访问。
2、war包可以理解为javaweb打的包,是一个web模块,包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。
3、war包需要发布到一个容器里面,拿Tomcat举例,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包就可以自动进行解压到你的web目录,相当于发布了。
4、war是Sun公司提出的一种Web应用程序格式,与jar类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(JavaBean)。
5、常用于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">
  ...
  <packaging>war</packaging>
  ...
</project>

pom

项目中使用maven进行模块管理时,每个模块下对应都会有一个pom文件,因为pom文件中维护了各模块之间的依赖和继承关系。
使用maven进行模块划分管理时,一般都会有一个父级项目,pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packaging打包类型,所有的父级项目的packaging都为pom(可以到pom.xml文件里面进行手动配置),packaging默认是jar类型,如果不作配置,maven会将该项目打成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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-parent</artifactId>
  <version>2.0</version>
  <packaging>pom</packaging>
</project>

作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-parent</artifactId>
  <version>2.0</version>
  <packaging>pom</packaging>
 
  <modules>
    <module>my-project</module>
    <module>another-project</module>
    <module>third-project/pom-example.xml</module>
  </modules>
</project>

子类项目的packaging值只能是war或者jar。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Spring Boot]03 Maven常用的打包(packaging)类型 的相关文章

  • c语言输入姓名输出姓和名_C输入和输出

    c语言输入姓名输出姓和名 Input means to provide the program with some data to be used in the program and Output means to display dat
  • Eclipse注释中文格式没对齐

    遇到的问题 一格式化 号就出现以下情况 老是对不齐 解决的办法 java code style formatter edit 去掉Enable block comment formatting复选框 然后把下面的数字调大一点就可以了 如果不
  • FPGA实现ADC采样芯片ADS8688的采样

    在电机控制中 一般需要对电机三相电流Iu Iv Iw采样 并通过采样补偿 坐标变换等将采样电流反馈值输出到电流环闭环控制 中 除此之外 还需要对母线电压 驱动器温度进行采样 监控采样值 以此为根据 来对运行中的驱动器做过压 过温保护 ADS
  • FPGA时序约束(一)基本概念入门及简单语法

    文章目录 一 建立时间和保持时间是什么 二 时序分析分类 三 时钟约束方法 3 1 时钟约束 3 2 输入延时约束 3 3输出延时约束 3 4时序例外 四 时序约束语法补充 文章目前大部分参考明德扬时序约束 只是一个学习总结 侵权删 原文链

随机推荐

  • mysql入坑之路(12)windows 部署MySQL,tar方式手动添加服务进行程序管理

    1 CTRL R 打开运行窗口 输入regedit点击确定打开注册表编辑器 2 找到HKEY LOCAL MACHINE SYSTEM CurrentControlSet Services 3 新建项 MYSQL服务 4 添加项内参数和值
  • 深度学习模型训练tips&典型报错解决方案(持续更新)

    一 Pytorch页面文件太小 无法完成操作 1 可能是python安装根目录磁盘虚拟内存不足 应增大虚拟内存 虚拟内存默认为C盘的2GB 2 可能是对应磁盘空间不足 需清理磁盘空间 3 如使用win10系统 Datalodar可能出现问题
  • PAT C入门题目-7-122 A-B (20 分)

    7 122 A B 20 分 本题要求你计算A B 不过麻烦的是 A和B都是字符串 即从字符串A中把字符串B所包含的字符全删掉 剩下的字符组成的就是字符串A B 输入格式 输入在2行中先后给出字符串A和B 两字符串的长度都不超过10 4 并
  • group by和select的使用

    GROUP BY的用法 1 group by概述 简单来说 将数据库的数据用 by 后面接的规则进行分组 即将一个大数据库分成一个个相同类型数据在一起的小区域 2 group by的语法 SELECT column name functio
  • idea Context: local file . file is included in 3 contexts

    最近不知道咋滴 我的好几个项目的applicationContext xml文件的头部都会出现这样的一个提示 看着很不舒服 删掉facts后 再重新加入 结果是这样就没有提示了
  • AcWing 902. 最短编辑距离(动态规划)

    这个题也做到过 貌似是鹅厂的压轴题 用三种方式编辑两个字符串的相似距离 题目 集合 将a 1 j 变成b 1 j 的操作方式 属性 min 考虑过程比较难 从末尾开始考虑 三种操作方式上着手 以下来自AcWing网友整理 很细致 有三种操作
  • 总结如何用 AbstractQueuedSynchronizer实现一个同步组件

    如何实现 1 创建一个名字为 MyTestLock接口 implment Lock 2 在 MyTestLock中 创建一个内部类 MyTestSyn 但是继承AbstarctQueuedSynchronizer 3 AbstarctQue
  • 前端与小程序

    之所以写这个因为我大半年没写过小程序了 早就记不清格式和规范了 最近又要写 用前端的方法写发现一堆用法错误 所以做个总结以后方便查询 1 数据绑定 vue中html的属性绑定一般在属性前加 比如 value data 只有innerHTML
  • sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com

    安装上ros无法进行rosdep init 解决方法如下 https zhuanlan zhihu com p 77483614 因此 在 usr lib python2 7 dist packages rosdep2 sources li
  • ambari增加host节点 安装ambari-agent

    基于配置好所需的环境 1 进入Hosts 选择Add New Hosts 2 从主节点 root ssh 下拷贝出id rsa文件 3 添加节点hostname ambari3 node com 和添加id rsa 注册 成功添加 之后一直
  • BMP文件转YUV文件

    目录 一 实验原理 1 BMP文件格式分析 位图文件头 BITMAPFILEHEADER 位图信息头 BITMAPINFOHEADER 调色板 Palette 实际的位图数据 ImageData 注意 字节序 2 RGB文件转YUV文件 R
  • 静态分析-常量传播

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 ConstantPropagation 1 newBoundaryFact CFG 2 newInitialFact 3 void meetInto CP
  • vue scoped属性的作用

    当style标签具有该scoped属性时 其CSS将仅应用于当前组件的元素 作用功能 实现组件的私有化 不对全局造成样式污染 表示当前style属性只属于当前模块虽然方便但是我们需要慎用 因为当我们使用公共组件时会造成很多困难 增加难度 想
  • ValueError: Attempt to convert a value (1) with an unsupported type xx to a Tensor

    如题所述问题 其本质是tensorflow版本不兼容的问题 但是为了一个错误去更新tensorflow版本 往往会消耗较长时间 而且说不定会引起其他地方依赖的问题 关于该问题可以考虑从不同角度进行考量 迂回解决 比如我在实验中 在使用a N
  • Flowable

    flowable介绍 flowable 是一个业务流程管理 BPM 和工作流系统 适用于开发人员和系统管理员 它是著名 Java 工作流引擎 Activiti 的原作者从 Activiti 分支创建的新工作流引擎 其核心是超快速 稳定的 B
  • 了解 ceil 和 floor 函数:C++ 中的取整函数

    在许多实际应用中 我们需要对浮点数进行取整操作 C 中提供了两个非常有用的函数 即 ceil 和 floor 用于进行向上取整和向下取整 这两个函数是 C 标准库 头文件中的函数 下面我们分别来了解一下它们的具体用法和示例 ceil 函数
  • ReactiveUI 入门

    ReactiveUI入门 ReactiveUI使您能够使用MVVM模式构建反应式 可测试和可组合的UI代码 请参阅我们的ReactiveUI文档手册 我们还有一个完整的跨平台演示应用程序 入门 要开始使用 请访问我们的 安装 页面 在引人注
  • CG v-光照着色探索:Educoder

    CG v 光照着色探索 Educoder 光照着色是计算机图形学中一个关键的概念 它可以使得渲染出的场景更加逼真和具有立体感 在本文中 我们将深入探讨光照着色的原理和实现 并使用源代码来演示 首先 让我们来了解一下什么是光照着色 在计算机图
  • 隐马尔可夫模型(HMM)攻略

    隐马尔可夫模型 Hidden Markov Model HMM 最初由 L E Baum 和其它一些学者发表在一系列的统计学论文中 随后在语言识别 自然语言处理以及生物信息等领域体现了很大的价值 平时 经常能接触到涉及 HMM 的相关文章
  • [Spring Boot]03 Maven常用的打包(packaging)类型

    目录 什么是pom xml Maven常用的打包类型 jar war pom 什么是pom xml POM是项目对象模型 Project Object Model 的简称 它是Maven项目中的一个XML文件 pom xml 此文件用于管理