Maven学习笔记(3)-Maven中POM.XML详解
目录
一、介绍POM
Maven之前的构建工具有Make和Ant,其中Make依赖构建脚本Makefile,Ant依赖构建脚本build.xml。同理,Maven项目也依赖构建脚本。
POM(Project Object Model,项目对象模型)是Maven 项目中的基本单元,它是一个 xml 文件,被放在工程根目录下。该xml 文件的名字,在Maven 1中叫做project.xml,在Maven 2和Maven 3中重命名为pom.xml。在pom.xml中定义了Maven项目的基本信息、描述项目如何构建、声明项目的依赖等。
执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。
应该如何书写pom.xml文件呢? Maven的官方网址上给出了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>
<!-- The Basics -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!-- Build Settings -->
<build>...</build>
<reporting>...</reporting>
<!-- More Project Information -->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- Environment Settings -->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>
二、编写POM
根据Maven的官方给出POM文件结构。可以写一个非常简单的pom.xml文件,用于讲解pom.xml中基本元素的含义。在任意目录下新建一个pom.xml文件,用notepad++打开(代码可以高亮显示),输入如下内容:
<?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.yonyou.dst</groupId>
<artifactId>WEB-OP</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Hello_Maven</name>
<description>My First Maven Project</description>
<project>
pom.xml中第一行代码是XML头,指明该xml文档的版本和编码方式。其他元素详解如下:
元素 | 描述 |
---|---|
project | project元素是pom.xml的根元素,它声明了POM的命名空间和xsd元素等。 |
modelVersion | modelVersion指定了当前POM模型的版本,对于Maven 2和Maven 3来说,它只能是“4.0.0”。 |
groupId | 坐标元素之一。定义了项目所在的组,组通常和该项目所在的公司和组织有关。groupId一般分为多个段。以两段为例:第一段为域,第二段为公司名称。域又分为org、com、cn等等,其中org为非营利组织,com为商业组织。比如apache公司的tomcat项目中,groupId的值是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache。如果一个公司有很多部门,可以把groupId写成三段式,第三段用于描述部门。 当创建一个pom.xml仅仅用于学习时,可将groupId设置为cn.gng(其中cn表示域为中国,gng是个人姓名缩写)。 |
artifactId | 坐标元素之一。项目的标识,它通常是项目的名称。比如apache公司的tomcat项目中,artifactId是tomcat。 |
version | 坐标元素之一。就是项目当前的版本。很多项目的版本都为”0.0.1-SNAPSHOT”,其中SNAPSHOT的意思是”快照”,说明该项目处于开发中,是不稳定的版本。项目升级后,version的值可变为:1.1、1.2-SNAPSHOT等。 |
packaging | 坐标元素之一。packaging元素决定了项目的打包方式。如不写packaging,则默认值为jar,Maven会帮我们生成一个JAR包;如果你定义该元素的值为war,Maven会帮我们生成一个WAR包;如果定义其值为POM(比如是一个父模块),那什么包都不会生成。除此之外,Maven默认还支持一些其他的流行打包格式,例如ejb3和ear。 |
name | 声明了一个对用户更为友好的项目名称,这个元素不是必须的。但最好还是给每个pom.xml文件声明name,方便信息交流。 |
description | 作用和name元素类似,对项目进行描述。 |
注意:每个项目有且仅有一个POM文件。其中, groupId、artifactId和version,是非常重要的三个元素,也是必不可少的元素。因为他们定义了整个项目在Maven世界中的坐标。在Maven的世界中,任何jar、pom、war都是基于这些坐标来进行定位和区分的。强烈建议,创建一个POM之前,应该要先决定groupId、artifactId和version的值。
三、超级POM
所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
这一部分内容超出了本人的学习接受能力。有时间再补充吧。
四、参考链接
1. Introduction to the POM
2. POM Reference
3. 极客学院
上一篇: Mockito编写单元测试
下一篇: css底部居中对齐