pom英文全称: project object model

1、概述

pom.xml文件描述了maven项目的基本信息,比如groupId,artifactId,version等。也可以对maven项目的远程仓库,打包形式,资源依赖关系等进行配置。一个最简单的pom.xml文件至少需要包含四个元素:modelVersion, groupId, artiffactId和version。

在一个pom文件中,如没有显式声明parent标签,则表明该项目默认继承一个原始的pom.xml文件(见参考资料[1])。

比如一个基本的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>
<parent> //父项目的信息
<artifactId>shv-parent</artifactId>
<groupId>com.tt.aa</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.tt.aa</groupId> //当前项目的信息
<artifactId>shvBig</artifactId>
<version>0.0.1-SNAPSHOT</version> //SNAPSHOT(快照)表示该项目还在开发中。
<name>shvBig</name>
<url>http://maven.apache.org</url>
</project>

其中主要的标签含义如下:

Project:所有元素的根元素,该元素声明的信息主要为了方便第三方插件使用。

modelVersion:用于指定当前POM模型的版本,对于maven2,maven3只能是4.0.0。

groupId:用于指定当前项目所属的组,比如com.tencent.teg。

artiffactId:当前项目所属组的唯一的ID号,比如:shvMrEngineWithBigram。

Version:用于指定当前项目的版本编号。比如:0.0.1-SNAPSHOT。后面的SNAPSHOT常指正在开发中的项目。

name: 用来声明一个对用户而言比较友好的项目名称。

2、常用操作。[3]

1)项目依赖,主要使用dependencies标签。

<dependencies>                //项目中的所需的额外依赖列表。
<dependency> //项目中依赖1。
<groupId>com.tt.aa</groupId>
<artifactId>shvUtil</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency> //项目所需的依赖2。
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.1.2</version>
<scope>provided</scope>
</dependency>
</dependencies>

2)在项目中添加插件,以及对插件的配置

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId> //第一个插件
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4.3</version> //插件的版本号
<executions> //设置插件的执行方式
<execution>
<id>copy-dependencies</id>
<phase>compile</phase> //编译,<phase>package</phase>打包
<goals>
<goal>copy-dependencies</goal> //设置项目所依赖的插件
</goals>
<configuration>
//${project.build.directory}为Maven内置变量,缺省为target
<outputDirectory>${project.build.directory}/lib</outputDirectory>
//表示是否不包含间接依赖的包
<excludeTransitive>false</excludeTransitive>
//表示复制的jar文件去掉版本信息
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
<configuration> //对插件进行配置
<source>1.6</source>       //源代码编译版本
<target>1.6</target> //目标平台编译版本;
<encoding>${project.build.sourceEncoding}</encoding> //设置插件或资源文件的编码方式。
</configuration>
</plugin>
</plugins>

3)设置项目编码方式

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

4)源代码打成jar包

<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
//<finalName>${project.build.name}</finalName>
<attach>true</attach>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>

PS:xml代码中的注释方式不对,请忽略这些细节^_^

关于maven 中的pom文件更详细的介绍:

http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html

本文参考资料:

[1] http://my.oschina.net/zh119893/blog/232896. 2016-01-27.

[2] http://blog.sina.com.cn/s/blog_534f69a001010lpv.html. 2016-01-27.

[3] http://my.oschina.net/zh119893/blog/276090

Maven项目中pom文件分析的更多相关文章

  1. IDEA的maven项目中 静态文件编译的问题

    IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源 ...

  2. IDEA的maven项目中静态文件编译的路径问题(未测试)

    转自:http://www.cnblogs.com/signheart/p/6625126.html IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进clas ...

  3. maven项目中各文件都没有报错,但是项目名称有红叉

             项目报错可以看到Problems(可以在Window--Show View--other--输入Problems找到) 一.可能原因     1.项目中各文件没有报错,但是项目名称中 ...

  4. Maven学习总结(15)——Maven 项目中pom.xml详解

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

  5. IDEA将Maven项目中指定文件夹下的xml等文件编译进classes

    eclipse下面创建的Maven项目,使用mybatis.eclipse里面能正常启动,在idea中一直卡在maybatis 加载位置. 1.首先是不报错也没反应.这个时候需要我们重写SqlSess ...

  6. Maven 项目依赖 pom 文件模板

    下面是网上down的 pom 文件模板: <!-- 属性 --> <properties> <spring.version>4.2.4.RELEASE</sp ...

  7. 解决Maven项目中pom.xml文件报错(Failure to transfer....)的问题

    打开pom.xml文件,查看错误,如果错误类型为:Failure to transfer.........之类的,则表明你的pom中依赖的jar包没有完全下载. 解决方法:找到你本地的maven仓库, ...

  8. 关于:maven项目中pom.xml文件添加依赖无法自动搜索的问题

    用的是eclipse 1.Window------>Show View------->Maven Repositories(这个选项一般不直接显示,而在others里面) 2.操作完毕后会 ...

  9. maven Web项目中POM的配置信息

    什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.在Maven中,当谈到Project的时候, ...

随机推荐

  1. Node.js学习 - Web Server

    Client - 客户端,一般指浏览器,浏览器可以通过 HTTP 协议向服务器请求数据. Server - 服务端,一般指 Web 服务器,可以接收客户端请求,并向客户端发送响应数据. Busines ...

  2. Git学习 -- 删除文件

    1 从版本库删除文件 git rm <file> git commit -m "xxx" 2 工作区中文件被误删,但版本库中没有删除,可以恢复到工作区 git chec ...

  3. HDU - 2502 Subway

    题目链接:http://poj.org/problem?id=2502 分析: 告诉一些地铁线路,从起点到终点,中途可以步行,可以坐地铁,找一条最短的路 主要是把图建立好,然后直接dijkstra或者 ...

  4. 上传Android或Java库到Maven central repository(转载)

    主要介绍利用Sonatype将jar或aar提交到Maven的中央仓库. 是不是希望将自己的jar或是aar传到maven官方库中,在The Central Repository中可以被其他人搜索使用 ...

  5. meta 常用标签总结

    声明:并非原创 meta元素工有3个可选属性(http-equiv.name.scheme)和一个必选属性(content),content定义与http-equiv或name属性相关的元信息 可选属 ...

  6. MySQL+heartbeat+nfs做高可用

    一.环境准备节点两个node1:10.10.10.202node2:10.10.10.203nfs服务器:node3:10.10.10.204系统环境CentOS release 6.5 (Final ...

  7. MapReduce常见算法

    1.单词计数 2.数据去重 3.排序 4.Top K(求数据中的最大值) 5.选择 6.投影 7.分组 8.多表连接 9.单表关联

  8. 移动端touch点穿(穿透)解决办法

    回答一 穿透(点穿)是在mobile各种浏览器上发生的常见的bug.可能是由click事件的延迟或者事件冒泡导致. 移动web开发常用的Zepto库中的touch和tap事件就会有点穿的bug(Zep ...

  9. java打jar包

    一.打包jar文件 1      如果是class文件     jar cvf myjar.jar Foo.class Bar.class 如果是包     jar cvf myjar.jar pac ...

  10. 挂载了Cinder Volume的实例无法动态迁移排错

    现象:挂载了Cinder Volume的实例无法动态迁移 [root@node-5 nova]# tail -f compute.log 2016-01-13 16:36:12.870 18762 E ...