什么是POM?
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
1 maven的协作相关属性
一个最简单的pom.xml的定义必须包含modelVersion、groupId、artifactId和version这四个元素,当然这其中的元素也是可以从它的父项目中继承的。在Maven中,使用groupId、artifactId和version组成groupdId:artifactId:version的形式来唯一确定一个项目:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
含义:组织标识,定义了项目属于哪个组,风向标,坐标,或者说若把本项目打包
用途:此名称则是本地仓库中的路径,列如:otowa.user.dao,在M2_REPO目录下,将是: otowa/user/dao目录
命名规范:项目名称,模块,子模块
-->
<groupId>otowa.user.dao</groupId>
<!--
含义:项目名称也可以说你所模块名称,定义当面Maven项目在组中唯一的ID
用途:例如:user-dao,在M2_REPO目录下,将是:otowa/user/dao/user-dao目录
命名规范:唯一就好
-->
<artifactId>user-dao</artifactId>
<!--
含义:项目当前的版本号
用途:例如:0.0.1-SNAPSHOT,在M2_REPO目录下,将是:otowa/user/dao/user-dao/0.0.1-SNAPSHOT目录
-->
<version>0.0.1-SNAPSHOT</version>
<!-- 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par -->
<packaging>war</packaging>
<!-- 元素声明了一个对用户更为友好的项目名称 -->
<name>maven</name>
</project>
2、JavaProject的pom.xml文件说明
通过Maven构建的JavaProject,在项目的根目录下都会存在一个pom.xml文件,这个文件是Maven的核心。
1、pom意思就是project object model。
2、pom.xml包含了项目构建的信息,包括项目的信息、项目的依赖等。
3、pom.xml文件是可以继承的,大型项目中,子模块的pom.xml一般都会继承于父模块的pom.xml
pom.xml文件的内容如下:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4
5 <groupId>com.mycompany.app</groupId>
6 <artifactId>myapp</artifactId>
7 <version>1.0-SNAPSHOT</version>
8 <packaging>jar</packaging>
9
10 <name>myapp</name>
11 <url>http://maven.apache.org</url>
12
13 <properties>
14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15 </properties>
16
17 <dependencies>
18 <dependency>
19 <groupId>junit</groupId>
20 <artifactId>junit</artifactId>
21 <version>3.8.1</version>
22 <scope>test</scope>
23 </dependency>
24 </dependencies>
25 </project>
pom.xml文件的节点元素说明:
<project> pom文件的*节点
<modelVersion> object model版本,对Maven2和Maven3来说,只能是4.0.0
<groupId> 项目创建组织的标识符,一般是域名的倒写
<artifactId> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging> 打包的方式,有jar、war、ear等
<name> 项目的名称
<url> 项目的地址
<properties> 属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 构建项目依赖的jar
其中由groupId、artifactId和version唯一的确定了一个项目坐标