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>shortvideo-parent</artifactId> <groupId>com.tencent.teg</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.tencent.teg</groupId> //当前项目的信息 <artifactId>shvMrEngineWithBigram</artifactId> <version>0.0.1-SNAPSHOT</version> //SNAPSHOT(快照)表示该项目还在开发中。 <name>shvMrEngineWithBigram_new</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.tencent.teg</groupId> <artifactId>shvBaseUtil</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