编写POM文件
Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
这里以一个最经典的例子来演示Maven如何简单使用。
首先,创建一个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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xv.maventest</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Maven Hello World Project</name>
</project>
代码的第一行是XML头,指定了该文档的版本和编码方式。
<project>元素定义了一个项目的基本坐标,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些元素不是必须的,但是使用它们可以让第三方工具帮助我们快速编辑POM文件。
根元素下第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0。
groupId,artifactId,version这三个元素定义了一个项目的基本坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。
groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。比如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp。
artifactId定义了而当前Maven项目在组中的唯一ID,
version指定了项目Hello-World的当前版本——1.0-SNAPSHOT。SNAPSHOT意为快照,表示该项目还处于开发中,是不稳定的版本。
name元素声明了一个对于用户友好的项目名称,这个元素并不是必须的,但是推荐设立,以方便信息交流。
没有任何实际的java代码,就能够定义一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象墨香最大程度地与实际代码解耦或者叫做正交性。能够在很大的程度上避免Java代码和POM代码的相互影响。