转载

Maven项目中pom文件分析

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

原文  http://www.cnblogs.com/liuwu265/p/5175413.html
正文到此结束
Loading...