详细解读Maven中pom.xml

  • 一、POM是什么
  • 二、存放位置
  • 三、基本设置
    • 3.1、头信息
    • 3.2、maven的基本信息
    • 3.3、POM之间的关系
      • 3.3.1、依赖关系
      • 3.3.2 继承关系:继承其他pom.xml配置的机制。
      • 3.3.3、聚合关系:用于将多个maven项目聚合为一个大的项目。

一、POM是什么

pom: Project Object Model,项目对象模型。通过xml可扩展标记语言(EXtensible Markup Language)格式保存的pom.xml文件。作用类似ant的build.xml文件,功能更强大。

作用:该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

二、存放位置

一个完整的pom.xml文件,放置在项目的根目录下。

三、基本设置

3.1、头信息

格式:<project -->

头信息中字段的说明:

xmlns:命名空间,类似包名,因为xml的标签可自定义,需要命名空间来
xmlns:xsi:xml遵循的标签规范
xsi:schemaLocation:用来定义xmlschema的地址,也就是xml书写时需要遵循的语法

3.2、maven的基本信息


字段说明

modelVersion:声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。

groupId:公司或者组织的唯一标志,并且配置时生成的路径也是由此生成

artifactId:本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的

version:本项目目前所处的版本号

packaging:打包类型,可取值:pom , jar , maven-plugin , ejb , war , ear , rar , par等等

name:项目的名称, Maven产生的文档用,可省略

url:项目主页的URL, Maven产生的文档用 ,可省略

其中groupId,artifactId,version,packaging这四项组成了项目的唯一坐标。一般情况下,前面三项就足矣。

3.3、POM之间的关系

3.3.1、依赖关系

 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.0</version><scope>test</scope><optional>true</optional><exclusions><exclusion>  <groupId>xxx</groupId><artifactId>xxx</artifactId></exclusion></exclusions></dependency>…</dependencies>

字段说明:
groupId 依赖项的组织名

artifactId 依赖项的子项目名

version 依赖项的版本

type 依赖类型一般省略,默认类型是jar,其他还有jar,war,ejb-client和test-jar

scope 依赖项的适用范围 ,包括compile,provided,runtime,test,system,exclusions

optiona 可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。

exclusions 排除项目中的依赖冲突时使用,不依赖该项目

3.3.2 继承关系:继承其他pom.xml配置的机制。

思路:创建POM的父子结构,在父POM中声明一些配置供子POM继承、

父 pom.xml

  [...]<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.4</version><scope>test</scope></dependency></dependencies>[...]
</project>

子 pom.xml

[...]
<parent><groupId>com.devzuz.mvnbook.proficio</groupId><artifactId>proficio</artifactId><version>1.0-SNAPSHOT</version><relativePath>../ParentProject/pom.xml</relativePath>
</parent>
[...]

3.3.3、聚合关系:用于将多个maven项目聚合为一个大的项目。

想要一次构建两个项目,而不是到两个模块的目录下分别执行mvn命令 – Maven的聚合就是为该需求服务的。

为了能够使用一条命令就能构建account-email和account-persist两个模块,需要创建一个额外的名为account-aggregator的模块,然后通过该模块构建整个项目的所有模块。

account-aggregator也有它自己的POM文件,内容如下:

<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.0http://maven.apache.org.maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.park.mvnDemo.account</groupId><artifactId>account-aggregator</artifactId><version>1.0.0-SNAPSHOT</version><packaging>pom</packaging><name>Account Aggregator</name><modules><module>account-email</module><module>account-persist<module></modules>
</project>

文章参考:https://blog.csdn.net/jk418756/article/details/87917776?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.no_search_link

详细解读Maven中pom.xml相关推荐

  1. 二:Maven中pom.xml元素详解

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628201.html  一个pom.xml中包含了许多标签,各个标签是对项目生命周期.依赖管理的配置.常用的主 ...

  2. maven中pom.xml显示不正常的问题

    对于初学maven的人来说,配置环境是一件十分烦恼的事,本人也表示十分痛心,就自己遇到的问题做一下整理,方便后续学者有帮助可寻. 我遇到的问题是,在自认为maven配置无误之后,发现pom.xml显示 ...

  3. maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 参考:http://zhaoshijie.iteye.com/blog/2094478 http:/ ...

  4. maven中pom.xml中的scope讲解

    一.compile:编译范围 compile是默认的范围:如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它们也会被打包.而且这些dependency会传递到依赖的项目中. ...

  5. maven中pom.xml中依赖包代码的查询地址

    http://mvnrepository.com/ 转载于:https://www.cnblogs.com/wangcp-2014/p/5456672.html

  6. maven的pom.xml中repositories的作用

    在maven中pom.xml是Maven进行工作的主要配置文件,它的作用包括:配置Maven项目中需要使用的远程仓库,Maven项目的资源依赖关系等.其中pom是Project Object Mode ...

  7. Maven中pom文件详解

    在IDE中使用Maven IDE工具 MyEclipse 集成maven插件 Eclipse ​ Eclipse For Java EE IDEA 集成Maven插件 在IDE中 配置Maven 指定 ...

  8. maven项目pom.xml中parent标签的使用

    本文来说下maven项目pom.xml中parent标签的使用 文章目录 parent标签 parent标签由来 依赖排除 本文小结 parent标签 parent标签使用例子 <!--父项目的 ...

  9. pom文件找不到子项目_java,eclipse_eclipse中maven项目pom.xml文件找不到parent要怎么解决?,java,eclipse,maven - phpStudy...

    eclipse中maven项目pom.xml文件找不到parent要怎么解决? 在maven项目中方pom.xml文件找不到parent,maven clean报错如下: [ERROR] [ERROR ...

最新文章

  1. 带你进入String类的易错点和底层本质分析!
  2. 快上车!“正经”文章告诉你如何构建与使用分布式中间件平台实践
  3. idea gui插件_给 IDEA 换了酷炫的主题,研发小姐姐看到:feel so high。。。
  4. linux查看缓存的文件,linux – 如何查看缓冲和缓存的数据
  5. mysql sql语句里连接符的使用_SQL中group_concat函数,用符号连接查询分组里字段值...
  6. 畅通工程(最小生成树模板)
  7. 推荐系统组队学习——GBDT+LR
  8. c gui和java gui_C/C++编程GUI库比较
  9. Java后端开发常用规范
  10. elementui分页插件使用总结
  11. 修改Google浏览器默认打开是金山毒霸网址
  12. 一个完整项目的流程都涉及哪些内容
  13. 简单使用的MQTT调试软件
  14. 【UI界面开发】基本组件概述
  15. 控制台也能炫-chrome浏览器控制台输出彩色文字
  16. Vue后台管理系统模板介绍
  17. 相控阵天线方向图:栅瓣和波束斜视
  18. 基于LC3模拟器的简单游戏设计:简易四子棋
  19. 美联致美线雕提升术除皱效果怎么样呢
  20. DSR (串口通信中的术语)

热门文章

  1. Win10下配置机器学习python开发环境
  2. Win10内核驱动强制签名,申请沃通 EV代码签名证书
  3. 时标网络图怎么画?一篇文章两个方法轻松上手
  4. 汉字转换成拼音用函数
  5. 【无标题】通信软件开发及应用
  6. 年龄论文阅读——Deep Label Distribution Learning With Label Ambiguity
  7. 斯坦福博士生自制的 PPT 生成神器火了!
  8. 回溯法解决工作分配问题
  9. 数据结构java版之《数组》
  10. python 寻找水仙花、寻找“完美数”、 百钱百鸡问题、斐波那契数列、craps掷骰子游戏