Maven实战(三)--Pom.xml详解
发布日期:2021-06-30 22:40:50 浏览次数:3 分类:技术文章

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

1.概述

pom中节点如下分布

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

2.基本配置

modelVersion:pom模型版本,maven2和3只能为4.0.0

groupId:组ID,maven用于定位
artifactId:在组中的唯一ID用于定位
version:项目版本
packaging:项目打包方式,有以下值:pom, jar, maven-plugin, ejb, war, ear, rar, par

3.依赖配置

parent

用于确定父项目的坐标。

com.learnPro
SIP-parent
0.0.1-SNAPSHOT

groupId:父项目的构件标识符

artifactId:父项目的唯一标识符
relativePath:Maven首先在当前项目的找父项目的pom,然后在文件系统的这个位置(relativePath),然后在本地仓库,再在远程仓库找。
version:父项目的版本
modules

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

com-a
com-b
com-c

properties

用于定义pom常量

1.7

上面这个常量可以在pom文件的任意地方通过${java.version}来引用

dependencies

项目相关依赖配置,如果在父项目写的依赖,会被子项目引用,一般父项目会将子项目公用的依赖引入(将在之后详细讲解)

junit
junit
4.12

这边依赖和中央仓库中的一致,就可以引入对应的jar

dependencyManagement

配置写法同dependencies

.....

在父模块中定义后,子模块不会直接使用对应依赖,但是在使用相同依赖的时候可以不加版本号:

父项目:

junit
junit
4.12
test

子项目:

junit
junit

这样的好处是,父项目统一了版本,而且子项目可以在需要的时候才引用对应的依赖

4.构建配置 build

用于配置项目构建相关信息

......
......

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/

system:系统类型

url:路径
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。

distributionManagement

它管理的分布在整个构建过程生成的工件和支持文件

...
http://mojo.codehaus.org/my-project
deployed

downloadUrl: 其他pom可以通过此url的仓库抓取组件

status:给出该构件在远程仓库的状态
none: 默认
converted: 将被早期Maven 2 POM转换过来
partner: 这个项目会从合作者仓库同步过来
deployed: 从Maven 2或3实例部署
verified: 被核实时正确的和最终的

Repository

指定Maven pom从远程下载控件到当前项目的位置和方式,如果snapshotRepository没有被定义则使用repository相关的配置

false
corp1
Corporate Repository
scp://repo/maven2
default
true
propSnap
Propellors Snapshots
sftp://propellers.net/maven
legacy
...

id, name:仓库的唯一标识

uniqueVersion:true或false,指明控件部署的时候是否获取独立的版本号。
url:repository元素的核心。指定位置和部署协议发布控件到仓库。
layout:布局,default或legacy

Site Distribution

多分布存储库,distributionManagement负责定义如何部署项目的网站和文档。

...
mojo.website
Mojo Website
scp://beaver.codehaus.org/home/projects/mojo/public_html/
...

id, name, url: 这些元素与distributionManagement repository中的相同

Relocation

重新部署-项目不是静态的,是活的。他们需要被搬到更合适的地方。如:当你的下个成功的开源项目移到Apache下,重命名为org.apache:my-project:1.0 对你项目更有好处。

...
org.apache
my-project
1.0
We have moved the Project under Apache
...

profiles

profile可以让我们定义一系列的配置信息(插件等),然后指定其激活条件

profile的相关配置可以参考上篇文章Maven实战(二)–setting.xml详解:

参考官方文档:

—————————————————————————————————————————————————–

java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万

下载地址:

https://item.taobao.com/item.htm?spm=686.1000925.0.0.4a155084hc8wek&id=555888526201

01.高级架构师四十二个阶段高

02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)

01内容详情:

这里写图片描述
—————————————————————————————————————————————————–

转载地址:https://lovoo.blog.csdn.net/article/details/77881784 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Maven实战(一) eclipse构建maven的web项目
下一篇:文章标题

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月01日 05时13分35秒