Maven学习之pom.xml常用标签元素&&依赖冲突的解决&&继承 ( I )

pom.xml常用标签元素:

modelVersion 指定了当前pom版本
groupId 反写的公司网址+项目名
artifactId 项目名+模块名
version 版本号 第一个0表示大版本号,第二个0表示大版本号,第三个0表示大版本号 0.0.1snapshot快照
packaging 打包方式 默认是jar

name 项目的描述名
url 项目的地址
description 项目描述
developers 开发人员信息
licenses 许可证信息

dependencies
dependency

scope 依赖范围
optional 设置依赖是否可选
exclusion

dependencyManagement 依赖管理 不会被运行

build

plugins 插件列表(指出座标)
parent 对父模块的继承
modules 定义多个模块 一起进行编译

dependency scope:指定依赖范围

 --compiler:默认的范围,编译测试运行都有效
 --provided:编译测试时有效
 --runtime:测试和运行时有效
 --test:测试时有效
 --system:与本机系统相关联,可移植性差
 --import:导入的范围,只在dependencyManagement中使用,表示从其他的pom中导入dependency的配置

依赖具有传递性所以如果需要去除不需要的依赖则

<exclusions>
<groupId>项目ID</groupId>
<artifactID>项目名+模块名</artifactID>
</exclusions>

依赖冲突的解决

1.短路优先:

A->B->X(v1.0),A->C->D->X(v2.0)
A-->X(v1.0)

2.声明顺序:

A->B->X(v1.0),A->C->X(v2.0),A-pom.xml: ... <dep C> <dep B> ... 
A-->X(v2.0)
路径长度相同时,哪个dependency先在pom.xml声明,哪个就优先

继承

1.应用场景:组件聚合时,多个组件使用相同的依赖导致聚合后出现重复,使用一个父组件定义该依赖,然后有需要的组件继承该组件,聚合时就不会重复.
2.父组件定义依赖
在父组件–>dependencyManager–>dependencies下定义dependency
注意,dependencyManager下定义的dependency,该组件不依赖
3.继承父组件
parent标签下引用父组件的座标
创建dependency引用,只有groupIdartifactId子元素
继承 子pom.xml的写法,先

<parent>
<groupId>项目ID</groupId>
...
...
<parent>

聚合(将多个模块聚合)
1.创建聚合项目 proj-aggreation
2.packaging为pom
3.使用modules定义要聚合的模块

<modules>
<module>../proj-m1</module>
<module>../proj-m2</module>
</modules>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章