Maven项目中pom文件分析

来源:互联网 发布:淘宝买家如何删除评价 编辑:程序博客网 时间:2024/05/22 10:25

pom英文全称: project object model 

1、概述

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

在一个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

 

分类: java
标签: maven, pom
好文要顶关注我 收藏该文
liuwu265
关注 - 4
粉丝 - 20
+加关注
0
0
«上一篇:隐马尔可夫模型(HMM)原理
原创粉丝点击