欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-26 16:01:46
...

目录


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

相关标签: POM