POM文件结构

Project Object Model是Maven2项目的基础所在,简单来说它就是一个XML文件,Maven2用它来描述一个工程的整个生命周期所需要执行的一系列功能和特性。

最小配置

任何项目都最少要包含以下几个标签。

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.family168.maven2book</groupId>
<artifactId>ch07</artifactId>
<version>1.0</version>
</project>

modelVersion这个标签必须存在,而且它的值必须是4.0.0,这标志着我们现在使用的是maven2。

groupId和artifactId合起来作为当前项目的唯一标识,maven2最终会根据这两个值,决定项目发布到repo上时所处的位置。

version是项目的版本号,它用来标记同一个项目发布的不同版本。

管理依赖

我们平常接触最多的就是dependencies标签了。因为既然使用了maven2,最大的得益之处还是可以用它统一管理依赖库。dependencies和它内部的dependency标签就用来配置当前项目所依赖的第三方库的。

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.family168.maven2book</groupId>
<artifactId>ch07</artifactId>
<version>1.0</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

我们可以看到dependency标签中也包含了groupId,artifactId和version信息,这三部分就是一个maven2项目所需的最小配置,也是maven2所管理的项目的唯一标识,有了这三个数据,maven2就可以在repo中查找到对应的依赖,并将其包含到我们的项目中,从而实现对依赖库的管理。

上面的依赖中,我们使用了groupId为junit,artifactId为junit,版本为3.8.1的依赖,这个依赖会在test作用域中起作用,也就是说,只有在进行单元测试的时候,才会用到这个依赖,与之对应的是,当我们的程序正常编译,运行,打包发布时,是不会包含这个依赖的。maven2内置了多个作用域,可以让我们将不同阶段使用的依赖库进行隔离,之后我们会慢慢讨论这部分的信息。

现在你需要知道,可以使用dependencies和dependency为项目定义多个依赖,并且每个依赖都需要groupId,artifactId和version这些数据就可以了。

构建部分

pom中一大部分配置都包含在build标签中,这部分是在对项目进行构建时所需要的配置,当你对项目进行编译,测试,打包,发布的时候,这部分配置就会在对应的阶段起作用了。

build标签中可以包含很多插件,这些插件可以配置到项目的某些构建阶段,随着项目的构建进程发挥作用。

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.family168.maven2book</groupId>
<artifactId>ch07</artifactId>
<version>1.0</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies> <build>
</build>
</project>

报表部分

我们执行mvn site就可以为项目生成一系列可以用来描述项目信息的网页,maven2中的一大部分插件就是专门在这时候发挥效用的,它们可以根据项目的结构,源代码,测试,SCM信息等,生成各种特殊功能的报表,这要把这些插件配置在reporting标签中,它们就会在执行mvn site的同时起作用。

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.family168.maven2book</groupId>
<artifactId>ch07</artifactId>
<version>1.0</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies> <build>
</build> <reporting>
</reporting>
</project>

maven pom文件结构详解的更多相关文章

  1. 【maven】maven pom文件详解

    maven pom文件详解 最近配置maven中的pom文件,maven中有些属性不太清楚,在这里记录一下 <project xmlns="http://maven.apache.or ...

  2. maven pom文件详解

    http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html http://blog.csdn.net/houpengfei111/a ...

  3. Maven POM.xml详解[转]

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

  4. 史上最全maven pom.xml详解

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

  5. Maven pom.xml详解(转)

    pom文件总体结构 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  6. 【转载】Maven pom文件详解

    什么是pom?    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的u ...

  7. maven pom属性 详解

    pom.xml文件(实践用):<project xmlns="http://maven.apache.org/POM/4.0.0"   xmlns:xsi="htt ...

  8. maven pom.xml 详解(注释版)

    转自:http://mrlee23.iteye.com/blog/1806412 pom.xml <project xmlns="http://maven.apache.org/POM ...

  9. 【maven】 pom.xml详解

    pom.xml详解 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

随机推荐

  1. 模仿QQ左滑删除

    需求: 1.左滑删除 2.向左滑动距离超过一半的时候让它自动滑开,向右滑动超过一半的时候自动隐藏 3.一次只允许滑开一个item 还有,根本不需要自定义view来实现,谨防入坑 布局: <?xm ...

  2. ce游戏内存修改器(Cheat Engine)

    ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具新版6.1 版的CE与6.0 最大的区别就是添加了修改器制作工具,比之前 5.6.1 ...

  3. Eclipse 的 Debug 介绍与技巧【转载】

    没有任何程序员能够一气呵成的写出没有任何 Bug 的代码,所以很多程序员有相当一部分时间是花费在 Debug 上的,程序调试是每个程序员必须面对的工作.如何使用 Eclipse 进行有效的.尤其是高效 ...

  4. iOS10 UI教程视图的几何形状

    iOS10 UI教程视图的几何形状 视图属性中的一部分属性可以让定义的视图绘制在屏幕上.在讲解这些属性前,我们首先将讲解,定义视图的几何形状所涉及到的结构类型.这些结构类型如下: CGPoint:它表 ...

  5. 我认为我可以去尝试做一下Maya Ue4导出插件

    Begin Map Begin Level Begin Actor class="StaticMeshActor" Name=Floor Archetype=StaticMeshA ...

  6. wordpress发送测试邮件

    下面的邮箱设置使用了qq邮箱的设置 写上接收测试邮件的邮箱  再send test

  7. Java keytool 使用总结

    Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中. 在keystore里,包含两种数据: ( ...

  8. node.js 实现一个简单的登录拦截器

    拦截器在web开发中随处可见,比如站点的管理后台,不说所有人都能进入,所以就需要做一个拦截器并友好的跳转到提示页. 下面我们简单实现一种,判断用户是否登录成功,登录不成功的用户自动重定向到登录页面. ...

  9. Set集合对象比较两个元素的方法

    Set集合对象比较两个元素的方法并不是根据“equals()”方法的返回值来比较.而是用“hashCode()”方法来进行判断.只要两个元素的“hashCode()”方法的返回值相同,就认为两个元素相 ...

  10. ACM : Travel-并查集-最小生成树 + 离线-解题报告

    Travel Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u /*题意 给出n[节点 ...