基本介绍
pom(project object model)项目对象模型,通过pom.xml去表示,当我们要构建一个maven项目时,我们会根据pom.xml的配置进行构建,所以pom.xml对于maven项目来说非常重要。
pom.xml主要由基本配置部分,构建部分(build),环境设置部分。
基本配置
1.项目标识
groupId, artifactId和version是maven的三个核心配置,通过这三个配置,maven能知道具体需要查找什么项目,以及项目的版本,就能成功的定位到一个项目了。
名称 | 描述 |
---|---|
groupId | 通常用公司或组织名称来表示,这样我们就能定位到具体的组织和公司了 |
artifactId | 通常用项目名称来表示,这样我们就能知道具体是哪个项目 |
version | 表示项目的版本,与group,artifactId一起使用能唯一标识一个项目包 |
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>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
2.packaging
用于指定构建时我们需要构建什么类型的包,可设置的参数主要有jar, rar,ear, ejb, war等。
3.Dependencies
用来指定构建项目时需要依赖哪些外部包,结构如下:
一个< dependencies>可包含多个< dependency>,而每个< dependency>中主要包括以下内容
参数 | 描述 |
---|---|
groupId | 项目的组织id |
artifactId | 项目Id |
version | 项目版本 |
type | 引入依赖包的类型,默认情况下是jar |
classifier | 用来标识同一个项目同一个版本的不同打包方式的名称 |
scope | 用来表明什么时候需要使用这个依赖包,可配置值有compile(默认值),provided ,runtime,test,system |
systemPath | 这个参数生效前提是scope的值为system,即通过指定本地路径方式引入依赖包,systemPath用于指定依赖包的本地路径 |
exclusions | 用来排除通过依赖自动下载的某个包,默认情况下当maven下载某个包时,会自动将下载项目的依赖包自动下载下来,而此时如果我们项目中引入了两个不同的包,但是这两个不同的包都依赖另一个第三方包,但是两个不同的包对于同一个第三方包依赖使用的版本不一样,为了避免冲突,就可以使用exclusion来将第三方包排除 |
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
...
</dependencies>
...
</project>
4.exclusion配置
主要配置groupId和artifactId两个参数来排除某一个依赖包的自动导入。
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-embedder</artifactId>
<version>3.1.0</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
...
</dependencies>
...
</project>
5.pom.xml文件继承
maven中可以支持pom文件的继承,具体如下
a. 父类pom.xml中的packaging值必须是pom,如下:
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId