POM是Project Object Model/项目对象模型的缩写。pom.xml文件中包含了依赖关系、构建目录、源目录、测试源目录、插件、目标等项目信息和配置信息。Maven读取pom.xml文件,然后执行构建目标。

pom.xml文件的基本元素

一个pom.xml文件至少需要包含以下元素:

元素 描述
project pom文件根元素,表示一个项目
modelVersion project元素的子元素,指定modelVersion版本号,应该设置为4.0.0
groupId project元素的子元素,指定项目所属的group
artifactId project元素的子元素,项目交付件ID,项目交付件是指项目的最终交付文件,如jar、zip、war等
version project元素的子元素,项目(交付件)的版本号

pom.xml示例:

<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.qikegu.demo</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1</version> </project>

pom.xml文件的常用元素

除了基本元素,下面是pom文件的一些常用元素:

元素 描述
packaging 定义打包类型,如jar, war
name 指定项目名称
url 指定项目url
dependencies 表示项目依赖项列表
dependency 表示单个依赖项,这个元素是依赖项列表元素的子元素
scope 单个依赖项的作用域,作用域可以是compile、test、runtime、provided、system之一,作用域的意图是限定该依赖项作用范围,如test,则表明依赖项只在test时起作用

pom.xml

<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.qikegu.demo</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging> <name>mybatis demo </name>
<url>http://www.qikegu.com</url> <dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-2</version>
<scope>test</scope>
</dependency> </dependencies> </project>

pom 继承

所有Maven POM文件都继承自一个父POM。如果没有指定,则POM文件默认继承自基本POM (base POM)。如下图所示:

可以使POM文件显式地继承另一个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> <parent>
<groupId>com.qikegu.demo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<relativePath>../my-parent</relativePath>
</parent> <artifactId>my-project</artifactId>
...
</project>

子POM文件可以覆盖父POM文件的设置。

生效 pom

使用pom继承时,很难清楚知道最终的生效pom是怎么样的,可以通过以下命令展示最终生效的pom内容:

mvn help:effective-pom

Maven项目的目录结构

Maven项目有标准的目录结构。如果遵循该目录结构,就不需要在POM文件中指定源代码、测试代码等目录。

如需详细了解,可参考官方文档

下面介绍几个最重要的目录:

- src
- main
- java
- resources
- test
- java
- resources - target
  • src目录是源代码和测试代码的根目录,main目录是项目源代码(不含测试目录)的根目录,test目录包含测试源代码。
  • resources目录是资源目录。
  • 如果项目是web应用程序,则webapp目录包含Java web应用程序。webapp目录将成为web应用程序的根目录,包含WEB-INF目录等。
  • 目标目录由Maven创建,包含Maven生成的所有已编译类、JAR文件等。在执行clean构建阶段时,目标目录会被清除。

Maven - pom.xml 文件的更多相关文章

  1. 史上最全的maven pom.xml文件教程详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  2. Maven pom.xml文件详解

    Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...

  3. [maven] pom.xml 文件详解

    参考资料: http://blog.csdn.net/uohzoaix/article/details/7035307 http://www.cnblogs.com/qq78292959/p/3711 ...

  4. 如何在maven pom.xml文件中设置Java编译器版本

    今天遇到一个问题: 在Eclipse中用maven创建一个新的web项目,然后再用maven update一下,则JDK版本自动变为1.5. 通过查找资料,终于发现maven编译器插件(Maven C ...

  5. maven pom.xml文件 仓库搜索服务

    POM(Project Object Model),即项目对象模型,是 Maven 工程的基本工作单元,是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建.声明项目依赖 等等 Maven ...

  6. 运行maven pom.xml文件后编译环境变为jdk1.5

    idea中运行pom.xml文件后,将编译环境变成了1.5,造成一系列的编译问题很是不方便. 以下是解决方法: 在"pom.xml"里加入如下代码: <properties& ...

  7. Maven pom.xml文件深度学习

    本文介绍Maven项目构建中,pom.xml文件的生成规则和常用节点的使用方法.pom.xml官方网址:http://maven.apache.org/pom.html pom简介 pom作为项目对象 ...

  8. 个人对maven pom.xml文件的理解

    如:一个项目可能需要引用另外两个项目的类.. 如 项目cswebbefore  需要引用cswebservice 和reports 这三个项目都有各自的pom.xml文件 cswebservice 项 ...

  9. 关于项目既要使用ant脚本又要使用maven pom.xml文件的问题

    背景:项目使用的是ant脚本打包,但又需要maven去执行sonar代码扫描.所以项目中既有build.xml又有pom.xml build.xml设置的打包后产物文件夹为target,maven运行 ...

随机推荐

  1. url的构成

    url的构成:一般来说,http请求都会和URL地址有关,对于url来说一般由下面5个部分构成 .协议:通常就是第一个冒号之前的内容常见协议:http,https(http+ssl),ftp,ssh, ...

  2. PE文件中找导出表

    导出表: typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,总为0 DWORD TimeDateStamp; ...

  3. Python测试进阶——(1)安装Python测试相关模块

    安装python 安装pip yum -y install epel-release yum -y install python-pip 安装psutil 参考:https://www.cnblogs ...

  4. 搭建python的开发环境(采用eclipse的开发工具)在线和离线安装pyDev

    一.首先下载python的开发环境并安装 在这里下载python3.7.2,然后安装在一个指定文件夹,随后,将安装路径配置到环境变量中 验证是否成功 OK! 二.在线安装pyDev工具 三.导入开发环 ...

  5. 关于Orcale 11g 安装过程

    1.前往Oracle官网下载相应安装包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...

  6. 面试题之xml解析?

    题目是:用java程序将xml中的数据保存到实体对象中,如何实现? xml如下: <?xml version="1.0" encoding="UTF-8" ...

  7. 一个小证明(题解 P5425 Part1)

    所以这道题为什么可以这样做 嗯,我也不知道,不过我是来填坑的. \(Q\):为什么要把牛分成\(1\),\(1\)......\(N-K+1\)这样的\(K\)组呢? \(A\):我们设第\(i\)组 ...

  8. input type="submit" 和"button"有什么区别

    HTML中<input type="submit" /> 和 <input type="button" /> 主要从元素定义类型.点击触 ...

  9. Unable to execute dex:Multuple dex files define 解决方法

    困扰我两天的问题终于解决了,在网上查的方法无非有三种 一. Eclipse->Project->去掉Build Automatically->Clear ->Build Pro ...

  10. 038、Java中逻辑运算之非运算“!”

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...