1.pom文件
pom文件定义了一个maven项目的maven配置,一般pom文件的放在项目或者模块的根目录。maven的遵循约定大于配置。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
project | 整个pom配置文件的根元素,所有配置全都写在project元素中 |
groupId | 项目组的标识,它在一个组织或者项目中通常是唯一的 |
artifactId | 项目的标识,通常是工程的名称。它在一个项目组下是唯一的 |
version | 项目的版本号,用来区分同一个artifact的不同版本 |
packaging | 这是项目产生的构件类型,即项目通过maven打包的输出文件的后缀名,包括jar、war、ear、pom等 |
2.父pom和子pom关系(继承)
①如果父pom中是
<dependencies>
</dependencies>
那么子pom会自动继承父pom依赖,不需要子pom去导入
②如果父pom中是
<dependencyManagement>
<dependencies>
</dependencies>
</dependencyManagement>
则子pom不会自动继承父pom的依赖,除非子pom中声明,声明需要groupId和artifactId,无需给到version。此方法是用来约束子pom,若要使用,需声明。
3.父POM与子POM
(1)父POM的作用:是消除配置的重复。
(2)子POM:
①无条件继承父POM的dependencies元素。
②子POM的dependencies元素可以有选择的继承父POM的dependencyManagement元素
③子pom也可以自己指定依赖的版本,不使用父pom的。
子POM无条件继承父POM的plugins元素;子POM的plugins元素可以有选择的继承父POM的pluginManagement元素。
<parent>
<artifactId></artifactId>
<groupId></groupId>
<version></version>
</parent>
parent | 用于指定父项目 |
groupId | parent的子元素,父项目的groupId,用于定位父项目 |
artifactId | parent的子元素,父项目的artifactId,用于定位父项目 |
version | parent的子元素,父项目的version,用于定位父项目 |
relativePath | parent的子元素,用于定位父项目pom文件的位置 |
Maven使用effective pom(父工程pom加上工程自己的配置)来执行相关的目标,它帮助开发者在pom.xml中做尽可能少的配置。当然,这些配置也可以被重写。
parent元素可以指定父pom。用户可以通过增加parent元素来自定义一个父pom,从而继承该pom的配置。parent元素中包含一些子元素,用来定位父项目和父项目的pom文件位置。