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