XML声明
<?xml version="1.0" encoding="UTF-8"?>
根元素
project 根元素,声明命名空间和限制。
通用元素
modelVersion pom模型版本(maven2和3为4.0.0)。
groupId 项目归属组织。
artifactId 项目的唯一标识。
version 项目版本。
name 项目名称。
url 项目地址。
packaging 项目产品。例如jar、war、ear、pom。
参数集
properties 自定义参数集,pom中全局通用(或者动态指定resource包,实现分别部署)。子元素语法格式
<name>value</name>
依赖元素
dependencies 项目所需依赖jar包集。
dependencyManagement 可以作为dependencies的父元素。模块声明依赖不会立即生效,如果引用此模块的pom没有特殊指定则生效。
dependency dependencies的子元素,语法格式
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
scope dependency的子元素,指定jar包的依赖范围。六种范围:
compile:编译依赖范围。默认依赖范围。长期有效。依赖关系会被传播。
test:测试依赖范围。只在测试有效。不传递。
provided:期待jdk、web容器等提供依赖。对于编译和测试有效(运行时容器会自己提供,例如servlet-api)。会传递。
runtime:运行时依赖范围。对于测试和运行有效。例如jdbc驱动的实现。
system:系统依赖范围。和provided范围一致。需要显示声明systemPath,不会在仓库中查找,长期有效。
import:导入依赖范围(maven 2.0.9版本以上)。只能在dependencyManagement元素内使用。会被真实引用的pom指定的dependency替换,不会影响依赖关系。
classifier dependency的子元素,用于生成附属组件时使用。
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.2</version>
<classifier>jdk15</classifier> //分类器指定不同情况下的情况。
</dependency>
type dependency的子元素,指定组件的类型,默认为jar。
optional dependency的子元素,标记组件是否可选用。
exclusions dependency的子元素,标记组件是否可传递。
systemPath dependency的子元素,标记组件绝对路径。