maven的核心是pom.xml,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述如何构建,声明项目依赖。以Hello World项目为例,创建一个hello-world的文件夹,里面新建一个pom.xml文件,内容如下:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.autonavi</groupId>
<artifactId>roadtaskservice</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>roadtaskservice</name>
</project>
代码的第一行是XML头,指定了该xml文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具帮助我们快速编辑POM。这段代码中最重要的是包含groupId,artifactId和version的三行,这三个元素定义了一个项目的基本坐标,在maven的世界,任何的jar,pom或者war都是以基于这些基本的坐标进行区分的。
groupId定义了项目 属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,artifactId定义了当前maven项目在组中的唯一ID,我们为这个Hello World项目定义artifactId为hello-world。version指定了Hello World项目当前的版本--1.0-SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
如果需要引用jar包,需要dependencies元素,该元素下可以包含多个dependency元素以声明项目的依赖。例如下面的依赖项。
<dependencies>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>compile</scope>
</dependency>
</dependencies>
除了groupId,artifactId,version这三个必不可少的元素,还有一个scope元素,表示依赖范围,若依赖范围为test,则表示该依赖只对测试有效。