Maven的pom.xml各标签作用及生命周期

本文详细介绍了Maven中的pom.xml配置文件,包括groupId、artifactId、version和packaging等核心标签的作用。重点讲解了dependency的scope属性,如compile、provided、runtime和test的不同作用范围。此外,还提及了maven构建生命周期中的clean、build和site阶段,以及常用插件的功能。理解这些概念有助于深入掌握Maven的项目构建和依赖管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引子:maven将各种工程视作对象(即pom),pom.xml是每个maven工程的基本配置
pom.xml中各个标签作用
在这里插入图片描述
groupId:项目组织的唯一标识符,即maven将项目打包到本地仓库的标识
artifactId:项目唯一标识,即maven将项目打包到本地仓库的标识
version:此项目的版本号。
packaging:maven将项目打成包的格式,一般三种(即jar,war以及pom)
这一系列标签统称本项目坐标,maven会将本项目打到在本地仓库中项目坐标指定的位置。也是本项目在本地仓库中唯一的标识ID

在这里插入图片描述
name:此项目的介绍
url:提供examlie网站展示的项目说明,以后可以改URL

在这里插入图片描述
project.build.sourceEncoding:当前项目编译成字节码文件的编码格式。一般是UTF-8,可根据需求更改。
maven.compiler.source:当前环境所使用的JDK。
maven.compiler.target:运行时使用JDK。
注意:后两个标签所使用的JDK标签最好一致,否则所使用的API和运行期间时的API不一致,会报ClassNotFind错。

在这里插入图片描述
dependencies:程序员经常打交到的标签,里面写的是本项目使用的第三方类库依赖。
dependency:依赖的本质是项目,也可看做本项目所依赖的工程坐标(依赖坐标)。maven会先根据项目坐标到本地仓库中去寻找,找不到就会联网到setting指定的网站中去拿并下载到本地仓库。
groupId&artifactId&version:跟上述一样是(项目坐标)
scope(重点,难理解): 依赖管理。作用:依赖的作用范围,不同的值代表此依赖不同的作用范围,有以下几个值:
1.compile:不指定scope标签,默认是compile。作用:compile包括项目的编译,运行,打包阶段,意味着被compile修饰的依赖都参与这些阶段, 比如在项目B中C依赖被指定为compile,那么现在A依赖B,A一样可以使用C。因为C被指定可以参与打包,那么B被打包的过程中C一并参与B的打包,所以B包含C,因此A依赖于照样可以用。

2.provided:只编译,运行和打包均不参与。例如上述图片中的servlet被指定 provided。意思就是在写源码过程中提供此servlet API并保证编译成功,可是在运行阶段不提供此API。这里有个疑点,编译成功后,但我运行阶段没有servlet不是会报ClassNotFind错误吗? 这里我们要跳出一个误区,运行过程中JDK不一定使用源码中的API,但是可以使用其他地方的。此时的运行阶段源项目包中没有servlet API但是tomcat有!!! 因此在编译阶段用的是源码的servlet,他只保证编译成功,语法正确。在运行阶段中本项目被打包到容器的tomcat中去了,所以JDK使用的是tomcat自带的servlet API。
Tomcat的servlet.api路径如下:
在这里插入图片描述

3.runtime: 不参与编译阶段,参与运行和打包过程。被runtime描述的依赖,不参与源码的编译阶段,即在写源码的过程中也不会显示此依赖的库。但是在运行过程中,如果他会被激活使用。同时他参与打包。
4.test: 该范围表明相关test阶段,即测试编译代码的过程,其他阶段均不参与。

上面四种是常用的

在这里插入图片描述
build:里面写的是maven build生命周期所需插件。
这里得先了解maven构建工程的几个生命周期:
构建工程的完美生命周期=clean+build+site
clean生命周期:下图中的clean插件,作用:刷新maven工程运行后的target包
build生命周期:下图中在红框内的几个插件,这些插件是maven构建项目时几个阶段。
site生命周期:下图中的site插件
在这里插入图片描述
这里重点解释红框中的插件:
validate:校验项目格式
compile:编译
test:测试阶段
package:打包
verify&install:打包后再次校验并安装至本地仓库
deploy:部署(具体到后面讲)

在这里插入图片描述
plugins:当前项目所需的第三方插件。

结语: 理解标签作用有利于了解maven的构建项目的过程及原理。编程深似水,不同方向了解工具及原理差异很大。但抱着一颗爱学的心,刨根问底,会锻炼出属于自己的理解问题的思维,学啥都容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值