Maven学习笔记(3)-Maven中POM.XML详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/so_geili/article/details/79430503

目录


一、介绍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. 极客学院

展开阅读全文

没有更多推荐了,返回首页