【Maven】pom.xml教程

【maven】-pom里面的 groupid artifactid version是啥,干啥用的 答案: 在 Maven 项目中,POM(Project Object Model)是一个XML文件,用于描述项目的配置信息和依赖关系。version(版本号):version用于标识项目的版本。它可以是任何字符串,但通常遵循一定的规则,如使用数字和点号进行版本号的表示。version用于管理项目的不同版本,以便在构建和依赖管理中进行正确的版本控制。这些元素在POM文件中的定义非常重要,因为它们用于确定项目的唯一性和版本控制。它们在Maven构建和依赖管理中起着关键的作用,确保项目的正确构建和依赖解析。 阅读详情

在上篇文章中我们了解了Maven:https://blog.hackyle.net/index.php/tools/maven-basic/,接下来我们将深入了解Maven的核心:pom.xml

什么是pom.xml

POM(Project Object Model):项目对象模型。

  1. Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂。相当于JavaWeb工程的web.xml。
  2. 所以,maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。

  1. modelVersion:Maven模型的版本,对于 Maven2和 Maven3来说,它只能是4.0.0

坐标

什么是坐标:

  1. 在互联网中唯一标识一个项目
  2. 由groupId、artifactId、version共同标识一个坐标

 

  1. groupId:组织ID,一般是公司域名的倒写。例如,百度可以指定groupId为:com.baidu
  2. artifactId:项目名称(模块名称),对应groupId中项目中的子项目。也要保持唯一。例如,百度地图可以指定为:baiduMap
  3. version:项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带”-SNAPSHOT”。version使用三位数字标识,例如1.1.2

从中央仓库获取Jar:

  1. 进入https://mvnrepository.com/
  2. 输入关键字进行搜索(例如我搜索:mysql),点击想要的版本:

打包

packaging

  1. 打包后压缩文件的拓展名,默认是jar,web应用是war
  2. 也可以不写,默认就是jar

依赖

什么是依赖:

  1. dependencies 和dependency,相当于是 java代码中import
  2. 因为Maven的一个重要作用就是管理jar包,这个标签就是指定项目中使用的第三方包的位置

scope

什么是scope标签

  1. 作用:指定依赖(也就是Jar包)在哪个阶段使用。阶段有编译,测试,打包,安装,部署。
  2. scope的值有:
    1. compile:编译时候才用。默认是compile
    2. test:测试的时候才用
    3. provided:表明该Jar包(依赖)不参与打包、安装、部署阶段。

依赖的传递:

好处:不用再每个模块工程中都重复声明。

注意:非compile范围的依赖不能传递。

依赖的排除:

依赖排除实例

配置属性properties

什么是配置属性properties

  1. 是用来设置一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码。
  2. 定义全局变量,通过“${属性名}”引用变量的值。

properties标签实例

<?xml version="1.0" encoding="UTF-8"?>

<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>

  其他标签
  <!--设置Maven的属性-->
  <properties>
    <!--设置编码-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--编译Java代码的JDK版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <!--代码运行的JDK版本,与上一个标签中的版本保持一致-->
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  其他标签

</project>

统一版本号

<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>net.hackyle</groupId>
  <artifactId>MavenJavaWeb</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <properties>
  	<spring-version>5.2.6.RELEASE</spring-version>
  </properties>
  
  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>${spring-version}</version>
  	</dependency>
  </dependencies>
  
</project>

构建build

构建build:

  • build表示与构建相关的配置,例如设置编译插件的jdk版本
  • 同时也控制Maven自身的配置参数

继承

什么是继承parent:

  1. 如果多个模块都需要声明相同的配置,例如:有相同的依赖、或者相同的组件配置等。那我们就把这些相同的部分抽取出来放在一个“父工程”中。
  2. 这样也方便修改和统一管理。

例子:

  1. Aaa模块中依赖的Junit为4.0,Bbb模块中依赖的Junit为4.9,Ccc模块中依赖的Junit为4.1。在同一个项目的各个模块的版本都不一致,容易出问题。
  2. 所以我们需要统一管理各个模块工程中对Junit依赖的版本。
  3. 解决思路:将Junit依赖统一提取到“父”工程中,在子工程中声明Junit依赖是不指定版本,以父工程中统一设定的为准。

如何实现一个父工程:

1)    创建一个Maven工程作为父工程。打包方式为pom。

2)    在子工程中声明对父工程的引用

3)    将子工程的坐标中与父工程坐标中重复的内容删除
4)    注意:配置继承后,执行安装命令时先安装父工程。

聚合

什么是聚合modules

  1. 对于使用了继承方式的项目(即有父工程)
  2. 以往在安装的时候需要先安装父工程,这样还不够自动化。所以引入聚合,一键安装各个模块工程。

具体操作步骤:

  • 在父工程中配置各个参与聚合的模块

  • 在父工程上执行Run As-Maven Install

 

Maven 教程之 pom.xml 详解 Maven 教程之 pom.xml 详解 pom.xml 简介 什么是 pom POM 是 Project Object Model 的缩写,即项目对象模型。 pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。 pom 配置一览 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= 阅读详情

相关推荐

离散小波-DWT

前沿:      小波变换比较复杂,而且内容

tianchang2you的专栏 4647

Pom.xml详解

POM全程,又称项目对象模型。他是Maven工程的基本工作单元,是一个XML(可扩展标记语言)文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。执行任务或目标时,Maven会在当前目录中查找 POM并读取从而获取所需的配置信息执行目标,属于项目级别的配置文件。

lukabruce的博客 1万+

MaaS 商业模式全面分析报告:从技术赋能到商业变现的全链条探索

MaaS(模型即服务)商业模式正成为AI产业主流,2024年上半年中国市场规模达2.5亿元,预计2027年占比将提升至47%。该模式通过云服务提供预训练AI模型,大幅降低企业应用AI的技术门槛和成本。核心盈利方式包括按使用量计费、订阅制、定制化服务等,其中混合模式因灵活性成为趋势。MaaS产业链包含模型提供商、云平台、应用开发商和最终用户,重塑了AI产业格局。随着《数据法案》等监管加强,数据增值服务面临更严格合规要求。未来五年,中国MaaS市场增速预计超50%,用户规模将从2025年2.1亿增至2030年5

芯片行业20年 · 参与定义实现千万级量产出货 · AI芯片PM 2889

pom.xml详解

我们在开发Java应用程序时,pom.xml文件是项目中的核心配置文件之一,它结合Maven实现对项目依赖的拉取,今天就详细了解一下pom.xml文件的配置。pom.xml文件是Maven项目的核心配置文件,它以XML格式编写。该文件的主要作用是定义项目的结构、依赖关系和构建过程。这样子简单的pom.xml结构就讲完了。pom.xml的大致文件结构如下。什么是pom.xml文件。也可以使用nexus。

大白猫的博客 1万+

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7602

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析

Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。

muyouking 1769

springboot项目名称对应

-----------------1 基础知识必备---------------------------- <groupId>com.yucong.commonmaven</groupId> <artifactId>commonmaven</artifactId> <version>0.0.1-SNAPSHOT</versio...

李云龙的意大利面 754

Unity中URP下的菲涅尔效果实现(个性化修改)

在上篇文章中,我们实现了 URP 下的菲涅尔基础效果,我们在这篇文章中,对其进行自定义化修改。

楠溪泽岸的博客 2063

Maven实战.pom.xml标签说明

pom.xml文件标签说明

weixin_37799575的博客 3190

Openclaw Onboarding向导全攻略——如何配置你的第一个AI助手

很多新手在成功运行 `openclaw --version` 后,面对黑底白字的终端就陷入了迷茫:“安装好了,然后呢?” 本篇我们就彻底解决这个问题,带你完整走完 `openclaw onboard` 交互式初始化配置向导的每一步,从“安装完成”到“真正能用”,只差这一个向导的距离。 本文为2026年3月最新版,适配OpenClaw v2026.2.x 稳定版,所有步骤均经过实测验证,可直接落地。

夏日清风 1917

IEC 104电力规约详细解读(一) - 报文结构、报文分类、ASDU

比如,双方可以按频率发送,比如接收8帧I帧回答一帧S帧,也可以要求接收1帧I帧就应答1帧S帧,当然也可以不要求(S帧内容示例参考例1)。所以U帧格式的控制欲第一个字节就只有6种情况,分别是0x83(TESTER确认)、0x43(TESTER命令)、0x23(STOPDT确认)、0x13(STOPDT命令)、0x0B(START确认)、0x07(START命令)ASDU(应用服务数据单元),协议原文格式最好去101协议去看看,会比较详细。遥信、遥测、遥控、遥调、总召、对时等都需要使用I格式传送。

张二狗的博客 1万+

史上最全的maven pom.xml文件教程详解

史上最全的maven pom.xml文件教程详解,代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm

云淡风轻、仅此一抹 6万+

【RT-DETR涨点改进】独家小目标涨点改进篇 | TGRS 2025 | RT-DETR引入ABRNet小目标检测顶刊中的:ARF自适应性感受野和MCA双向交叉轴注意力,适合小目标检测有效涨点

本文提出了一种改进的RT-DETR小目标检测方法,通过集成自适应感受野模块(ARF)和多尺度交叉轴注意力模块(BC)来提升检测性能。ARF模块采用多种卷积核动态调整感受野,有效捕获多尺度目标特征并减少背景干扰;BC模块通过多尺度交叉轴注意力机制增强全局信息提取和特征融合能力。实验表明,该方法在复杂背景下显著提升了红外小目标检测的精度和效率,同时降低了计算开销。文章详细介绍了模块结构、原理及实现代码,并提供了多种改进配置方案,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 570

Maven pom.xml文件教程详解

[xml]view plaincopyprint? projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apach

内方外圆 979

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Maven <pom.xml> 标签详尽教程

先看一个最小 POM 模板(上下文)

Rysxt_的博客 1023

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

史上最全的maven pom xml文件教程详解

史上最全的maven pom xml文件教程详解

qq_43680149的博客 499

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Maven】利用pom.xml使用log4j教程

Maven工程下导入log4j Maven的核心功能便是合理叙述项目间的依赖关系。 通过pom.xml文件添加依赖,配置jar包,而不用手动去导入jar包,十分便利又易于管理。 当我们需要添加jar包时,首先可以在maven仓库中查询对应的jar包(https://mvnrepository.com/) 找到所需的jar包,点击对应版本: 即可得到maven中pom.xml里依赖配置<d...

ngc_1277 1万+

maven pom.xml文件教程详解

<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...

oschina_40914891的博客 956
上一篇: 【Maven】几分钟了解Maven
下一篇: 【Maven】与Eclipse和IDEA集成
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值