maven教程之pom

POM代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。

POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。
POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM得到所需要的配置信息,然后执行目标。部分的配置可以在 POM 使用如下:

1
2
3
4
5
6
7
8
project dependencies
plugins
goals
build
profiles
project version
developers
mailing list

创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。

POM字段

所有的 POM 文件要项目元素必须有三个必填字段: groupId,artifactId,version
groupId:这是项目组的编号,这在组织或项目中通常是独一无二的。
artifactId:这是项目的ID。这通常是项目的名称。
version:这是项目的版本。

其他字段
packaging:打包方式 默认是jar
properties:定义变量
dependencyManagement:
出现在父pom(也可出现在子pom里,一般用于父pom中)
统一版本号
声明 (子POM里用到再引)

dependency:
type 默认jar
scope
a)compile 默认 编译时使用即编译打包时打进包里 例如spring-core
b)test 测试 只在测试时使用即编译打包时不会打进包里
c)provided 开发时使用 编译打包时不会打进包里 例如 servlet
d)runtime 只有在运行时会用到 主要是用于接口 编译打包时会打进包里 例如JDBC驱动实现
e)system 本地一些jar,中央仓库没有

依赖传递

第一列表示直接依赖的scope,第一行表示间接依赖的scope

compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime

- 表示不生效

查看依赖树

1
mvn dependency:tree > fileName.txt

依赖仲裁

最短路径原则 适用范围:依赖同一个包的不同版本
加载先后原则
exclusions 排除包

生命周期

生命周期1

生命周期1

超级POM

所有的POM继承自父类(尽管明确界定)。这个基础的 POM 被称为超级 POM,并包含继承默认值。 Maven使用有效的POM(超级POM加项目配置的配置)执行有关目标。它可以帮助开发人员指定最低配置的详细信息写在 pom.xml 中。虽然配置可以很容易被覆盖。 一个简单的方法来看看超级POM的默认配置,通过运行下面的命令:

1
mvn help:effective-pom
打赏

请我喝杯咖啡吧~

支付宝
微信