Maven - pom.xml 文件
章节
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 文件的更多相关文章
- 史上最全的maven pom.xml文件教程详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Maven pom.xml文件详解
Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...
- [maven] pom.xml 文件详解
参考资料: http://blog.csdn.net/uohzoaix/article/details/7035307 http://www.cnblogs.com/qq78292959/p/3711 ...
- 如何在maven pom.xml文件中设置Java编译器版本
今天遇到一个问题: 在Eclipse中用maven创建一个新的web项目,然后再用maven update一下,则JDK版本自动变为1.5. 通过查找资料,终于发现maven编译器插件(Maven C ...
- maven pom.xml文件 仓库搜索服务
POM(Project Object Model),即项目对象模型,是 Maven 工程的基本工作单元,是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建.声明项目依赖 等等 Maven ...
- 运行maven pom.xml文件后编译环境变为jdk1.5
idea中运行pom.xml文件后,将编译环境变成了1.5,造成一系列的编译问题很是不方便. 以下是解决方法: 在"pom.xml"里加入如下代码: <properties& ...
- Maven pom.xml文件深度学习
本文介绍Maven项目构建中,pom.xml文件的生成规则和常用节点的使用方法.pom.xml官方网址:http://maven.apache.org/pom.html pom简介 pom作为项目对象 ...
- 个人对maven pom.xml文件的理解
如:一个项目可能需要引用另外两个项目的类.. 如 项目cswebbefore 需要引用cswebservice 和reports 这三个项目都有各自的pom.xml文件 cswebservice 项 ...
- 关于项目既要使用ant脚本又要使用maven pom.xml文件的问题
背景:项目使用的是ant脚本打包,但又需要maven去执行sonar代码扫描.所以项目中既有build.xml又有pom.xml build.xml设置的打包后产物文件夹为target,maven运行 ...
随机推荐
- url的构成
url的构成:一般来说,http请求都会和URL地址有关,对于url来说一般由下面5个部分构成 .协议:通常就是第一个冒号之前的内容常见协议:http,https(http+ssl),ftp,ssh, ...
- PE文件中找导出表
导出表: typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // 未使用,总为0 DWORD TimeDateStamp; ...
- Python测试进阶——(1)安装Python测试相关模块
安装python 安装pip yum -y install epel-release yum -y install python-pip 安装psutil 参考:https://www.cnblogs ...
- 搭建python的开发环境(采用eclipse的开发工具)在线和离线安装pyDev
一.首先下载python的开发环境并安装 在这里下载python3.7.2,然后安装在一个指定文件夹,随后,将安装路径配置到环境变量中 验证是否成功 OK! 二.在线安装pyDev工具 三.导入开发环 ...
- 关于Orcale 11g 安装过程
1.前往Oracle官网下载相应安装包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...
- 面试题之xml解析?
题目是:用java程序将xml中的数据保存到实体对象中,如何实现? xml如下: <?xml version="1.0" encoding="UTF-8" ...
- 一个小证明(题解 P5425 Part1)
所以这道题为什么可以这样做 嗯,我也不知道,不过我是来填坑的. \(Q\):为什么要把牛分成\(1\),\(1\)......\(N-K+1\)这样的\(K\)组呢? \(A\):我们设第\(i\)组 ...
- input type="submit" 和"button"有什么区别
HTML中<input type="submit" /> 和 <input type="button" /> 主要从元素定义类型.点击触 ...
- Unable to execute dex:Multuple dex files define 解决方法
困扰我两天的问题终于解决了,在网上查的方法无非有三种 一. Eclipse->Project->去掉Build Automatically->Clear ->Build Pro ...
- 038、Java中逻辑运算之非运算“!”
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...