博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven之pom.xml配置文件详解
阅读量:4045 次
发布时间:2019-05-24

本文共 8382 字,大约阅读时间需要 27 分钟。

一、什么是pom

pom代表项目对象模型,它是Maven中工作的基本组成单位。它是一个XML文件,始终保存在项目的基本目录中的pom.xml文件中。pom包含的对象是使用maven来构建的,pom.xml文件包含了项目的各种配置信息。 创建一个POM之前,应该要先决定项目组(groupId),项目名(artifactId)和版本(version),因为这些属性在项目仓库是唯一标识的。需要特别注意,每个项目都只有一个pom.xml文件。

二、pom中的节点分布如下

4.0.0
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...

三、各节点解释说明

1.基本配置信息

4.0.0
com.company.bank
parent
1.0
war
节点 解释说明
modelVersion pom模型版本,maven2和3只能为4.0.0
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
artifactId 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
version 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0,com.company.bank:consumer-banking:1.1
packaging 项目打包方式,有以下值:pom, jar, maven-plugin, ejb, war, ear, rar, par

2.依赖配置

(1) dependencies
项目相关依赖配置,如果在父项目写的依赖,会被子项目引用。一般会在父项目中定义子项目中所有共用的依赖。

junit
junit
4.12

(2)parent

用于确定父项目的坐标位置。

com.learnPro
SIP-parent
0.0.1-SNAPSHOT
  • groupId: 父项目的组Id标识符
  • artifactId:父项目的唯一标识符
  • relativePath:Maven首先在当前项目中找父项目的pom,然后在文件系统的这个位置(relativePath),然后在本地仓库,再在远程仓库找。
  • version: 父项目的版本

(3) modules

有些maven项目会做成多模块的,这个标签用于指定当前项目所包含的所有模块。之后对这个项目进行的maven操作,会让所有子模块也进行相同操作。

com-a
com-b
com-c

(4) properties

用于定义pom常量

1.7

上面这个常量可以在pom文件的任意地方通过${

.version}来引用

(5)dependencyManagement

配置写法同dependencies

.....

在父模块中定义后,子模块不会直接使用对应依赖,但是在使用相同依赖的时候可以不加版本号,这样的好处是,父项目统一了版本,而且子项目可以在需要的时候才引用对应的依赖。

父项目:
junit
junit
4.12
test
子项目:
junit
junit

3.构建配置

......
......
  1. reporting
    该元素描述使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。

5.项目信息

  • name:给用户提供更为友好的项目名
  • description:项目描述,maven文档中保存
  • url:主页的URL,maven文档中保存
  • inceptionYear:项目创建年份,4位数字。当产生版权信息时需要使用这个值
  • licenses:该元素描述了项目所有License列表。 应该只列出该项目的-
  • license列表,不要列出依赖项目的 license列表。如果列出多个license,用户可以选择它们中的一个而不是接受所有license。(如下)
...
....
repo
....
  • organization:1.name 组织名 2.url 组织主页url
  • developers:项目开发人员列表(如下)
  • contributors:项目其他贡献者列表,同developers
....
...
...
...
Java Dev
Web UI
sun
...
-5

6.环境配置

issueManagement
目的问题管理系统(Bugzilla, Jira, Scarab)的名称和URL

Bugzilla
http://127.0.0.1/bugzilla/

ciManagement

项目的持续集成信息

continuum
http://127.0.0.1:8080/continuum
mail
true
true
false
false
continuum@127.0.0.1
  • system:持续集成系统的名字
  • url:持续集成系统的URL
  • notifiers:构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告)
    type:通知方式
    sendOnError:错误时是否通知
    sendOnFailure:失败时是否通知
    sendOnSuccess:成功时是否通知
    sendOnWarning:警告时是否通知
    address:通知发送到的地址
    configuration:扩展项

mailingLists

项目相关邮件列表信息

User List
user-subscribe@127.0.0.1
user-unsubscribe@127.0.0.1
user@127.0.0.1
http://127.0.0.1/user/
http://base.google.com/base/1/127.0.0.1
.....
  • subscribe, unsubscribe: 订阅邮件(取消订阅)的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建
  • archive:浏览邮件信息的URL
  • post:接收邮件的地址

scm

许你配置你的代码库,供Maven web站点和其它插件使用

scm:svn:http://127.0.0.1/svn/my-project
scm:svn:https://127.0.0.1/svn/my-project
HEAD
http://127.0.0.1/websvn/my-project
  • connection, developerConnection:这两个表示我们如何连接到maven的版本库。connection只提供读,developerConnection将提供写的请求
    写法如:scm:[provider]:[provider_specific]
    如果连接到CVS仓库,可以配置如下:-
  • scm:cvs:pserver:127.0.0.1:/cvs/root:my-project
  • tag:项目标签,默认HEAD
  • url:共有仓库路径

prerequisites

项目构建的前提

2.0.6

repositories,pluginRepositories

依赖和扩展的远程仓库列表,同上篇文章,setting.xml配置中介绍的。

false
always
warn
true
never
fail
codehausSnapshots
Codehaus Snapshots
http://snapshots.maven.codehaus.org/maven2
default
...
  • releases, snapshots:这是各种构件的策略,release或者snapshot。这两个集合,POM就可以根据独立仓库任意类型的依赖改变策略。如:一个人可能只激活下载snapshot用来开发。
  • enable:true或者false,决定仓库是否对于各自的类型激活(release 或者 snapshot)。
  • updatePolicy: 这个元素决定更新频率。maven将比较本地pom的时间戳(存储在仓库的maven数据文件中)和远程的. 有以下选择: always, daily (默认), interval:X (x是代表分钟的整型) , never.
  • checksumPolicy:当Maven向仓库部署文件的时候,它也部署了相应的校验和文件。可选的为:ignore,fail,warn,或者不正确的校验和。
  • layout:在上面描述仓库的时候,提到他们有统一的布局。Maven 2有它仓库默认布局。然而,Maven 1.x有不同布局。使用这个元素来表明它是default还是legacy。

转载地址:http://lswci.baihongyu.com/

你可能感兴趣的文章
Js作用域与作用域链详解
查看>>
nginx下 499错误
查看>>
网络性能测试工具iperf详细使用图文教程
查看>>
MacOSX上ab并发测试常见报错及解决办法
查看>>
为你的网站开启 gzip 压缩功能(nodejs、nginx)
查看>>
网页性能管理详解
查看>>
try catch 对代码运行的性能影响
查看>>
Koa框架实践与中间件原理剖析
查看>>
node.js 资料收集
查看>>
解除 Linux 系统的最大进程数和最大文件打开数限制
查看>>
怎样才是一个基本水平的java程序员?
查看>>
UGC,PGC,OGC
查看>>
一道关于Promise应用的面试题
查看>>
Couchbase 介绍 - 更好的 Cache 系统
查看>>
Memcached Redis Membase性能测试对比分析
查看>>
couchbase 与 redis的横向对比
查看>>
缓存的进化之路—Couchbase的分布式架构
查看>>
Chrome渲染分析之Timeline工具的使用
查看>>
浏览器加载 CommonJS 模块的原理与实现
查看>>
Node.js框架之express与koa对比分析
查看>>