maven pom文件结构详解
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文件结构详解的更多相关文章
- 【maven】maven pom文件详解
maven pom文件详解 最近配置maven中的pom文件,maven中有些属性不太清楚,在这里记录一下 <project xmlns="http://maven.apache.or ...
- maven pom文件详解
http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html http://blog.csdn.net/houpengfei111/a ...
- Maven POM.xml详解[转]
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 史上最全maven pom.xml详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Maven pom.xml详解(转)
pom文件总体结构 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- 【转载】Maven pom文件详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的u ...
- maven pom属性 详解
pom.xml文件(实践用):<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...
- maven pom.xml 详解(注释版)
转自:http://mrlee23.iteye.com/blog/1806412 pom.xml <project xmlns="http://maven.apache.org/POM ...
- 【maven】 pom.xml详解
pom.xml详解 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
随机推荐
- -webkit-text-size-adjust
ios使用-webkit-text-size-adjust禁止调整字体大小 body{-webkit-text-size-adjust: 100%!important;} android使用以下代码, ...
- MySQL数据库在WINDOWS系统CMD下的编码问题
MySQL数据库在WINDOWS系统CMD下的编码问题 1. 查看MySQL数据库编码 * SHOW VARIABLES LIKE 'char%'; 2. 编码解释 * character_set_c ...
- 让一个div在不同的显示器中永远居中
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- poj3642 01背包
http://poj.org/problem?id=3624 #include<iostream> #include<cstdio> #include<algorithm ...
- CSS3属性
1.边框阴影(box-shadow ): 投影方式,X轴偏移,Y轴偏移,阴影模糊半径,阴影扩展半径,颜色 2.边框图像(border-image) 3.边框圆角:border-radius:5px 4 ...
- 软件打开时间、窗体透明度、背景色---《用delphi开发共享软件》-15.1任务管理器
1.计算软件启动了多长时间:用定时器,每分钟触发一次: procedure TFrmMain.tmCheckLegalTimer(Sender: TObject);Var Minutes:LongIn ...
- delphi override、overload、reintroduce的区别-0613.txt
http://blog.csdn.net/honglixx/article/details/3624934 1.override overload reintroduce的中文叫法是什么? overr ...
- iOS UITextField的returnkey点击事件
关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理.我经过搜索与摸索,找到了最佳的处理办法.(引用的) ...
- Android自动化测试 - MonkeyRunner(三) 随手练习测试脚本
#coding=utf-8 import os import time #import MonkeyRunner three module from com.android.monkeyrunner ...
- DataTable过滤重复字段
有时我们需要从DataTable中抽取Distinct数据,以前总是以对DataTable进行foreach之类纯手工方式获取. 近来发现DataView可以帮我们直接获取Distinct数据,汗一个 ...