POM是Project Object Model/项目对象模型的缩写。pom.xml文件中包含了依赖关系、构建目录、源目录、测试源目录、插件、目标等项目信息和配置信息。Maven读取pom.xml文件,然后执行构建目标。

pom.xml文件的基本元素

一个pom.xml文件至少需要包含以下元素:

元素 描述
project pom文件根元素,表示一个项目
modelVersion project元素的子元素,指定modelVersion版本号,应该设置为4.0.0
groupId project元素的子元素,指定项目所属的group
artifactId project元素的子元素,项目交付件ID,项目交付件是指项目的最终交付文件,如jar、zip、war等
version project元素的子元素,项目(交付件)的版本号

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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qikegu.demo</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1</version> </project>

pom.xml文件的常用元素

除了基本元素,下面是pom文件的一些常用元素:

元素 描述
packaging 定义打包类型,如jar, war
name 指定项目名称
url 指定项目url
dependencies 表示项目依赖项列表
dependency 表示单个依赖项,这个元素是依赖项列表元素的子元素
scope 单个依赖项的作用域,作用域可以是compile、test、runtime、provided、system之一,作用域的意图是限定该依赖项作用范围,如test,则表明依赖项只在test时起作用

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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qikegu.demo</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging> <name>mybatis demo </name>
<url>http://www.qikegu.com</url> <dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-2</version>
<scope>test</scope>
</dependency> </dependencies> </project>

pom 继承

所有Maven POM文件都继承自一个父POM。如果没有指定,则POM文件默认继承自基本POM (base POM)。如下图所示:

可以使POM文件显式地继承另一个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.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <parent>
<groupId>com.qikegu.demo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath>../my-parent</relativePath>
</parent> <artifactId>my-project</artifactId>
...
</project>

子POM文件可以覆盖父POM文件的设置。

生效 pom

使用pom继承时,很难清楚知道最终的生效pom是怎么样的,可以通过以下命令展示最终生效的pom内容:

mvn help:effective-pom

Maven项目的目录结构

Maven项目有标准的目录结构。如果遵循该目录结构,就不需要在POM文件中指定源代码、测试代码等目录。

如需详细了解,可参考官方文档

下面介绍几个最重要的目录:

- src
- main
- java
- resources
- test
- java
- resources - target
  • src目录是源代码和测试代码的根目录,main目录是项目源代码(不含测试目录)的根目录,test目录包含测试源代码。
  • resources目录是资源目录。
  • 如果项目是web应用程序,则webapp目录包含Java web应用程序。webapp目录将成为web应用程序的根目录,包含WEB-INF目录等。
  • 目标目录由Maven创建,包含Maven生成的所有已编译类、JAR文件等。在执行clean构建阶段时,目标目录会被清除。

最新文章

  1. markdown语法记录
  2. 【BZOJ-1086】王室联邦 分块 + 块状树
  3. Oralce配置正确,报监听错误或无法识别描述中的服务
  4. 网站优化之-SEO在网页制作中的应用(信息来自慕课网课程笔记)
  5. JsRender系列demo(1)-insert-data
  6. 小白日记33:kali渗透测试之Web渗透-扫描工具-Burpsuite(一)
  7. 大型网站的架构设计问题&mdash;-大型高并发高负载网站的系
  8. EXTJS4:在grid中加入合计行
  9. IE 兼容性问题
  10. MySQL create table 语法
  11. beanstalk 安装
  12. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
  13. Java提高班(四)面试必备—你不知道的数据集合
  14. 网络协议抓包分析——ARP地址解析协议
  15. 教你用Windows自带工具给优盘/移动硬盘添加密码
  16. Oracle学习笔记--第2章 oracle 数据库体系结构
  17. chapter15中使用generator来实现异步化操作的同步化表达的例子
  18. postgresql 查看数据库,表,索引,表空间以及大小
  19. (转)Linux PS 详解
  20. 有趣:256个class选择器可以干掉1个id选择器——张鑫旭

热门文章

  1. JVM性能调优指南
  2. springMVC,spring和Hibernate整合(重要)
  3. spring-boot-autoconfigure-xx.jar核心注解
  4. Java程序员学习Go指南(三)
  5. 007、Java中定义int型变量
  6. 八数码问题 双向BFS/Hsh链表存储
  7. Python中pandas透视表pivot_table功能详解(非常简单易懂)
  8. (八)微信小程序---获取定位信息chooseLocation
  9. POJ 1472:Instant Complexity 模拟时间复杂度
  10. 6 —— node —— 响应一个完整的页面