> 文章列表 > 【Maven 入门】第三章、Maven POM

【Maven 入门】第三章、Maven POM

【Maven 入门】第三章、Maven POM

一、什么是 Maven POM?

POM 是 Maven 中最重要的概念之一,它描述了一个 Maven 项目的基本信息和依赖关系。简单来说,POM 就是一个 XML 文件,其中包含了以下内容:

  • 项目的基本信息,如名称、版本号、描述等。
  • 项目的依赖关系,即该项目所依赖的其他库或框架。
  • 插件配置,用于构建和打包项目时执行一些额外的任务。

二、Maven 核心概念:坐标

1、数学中的坐标

 使用 x、y、z 三个『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』。

2、Maven中的坐标

2.1、量说明

使用三个『向量』在『Maven的仓库』中唯一的定位到一个『jar』包。

  • groupId:公司或组织的 id
  • artifactId:一个项目或者是项目中的一个模块的 id
  • version:版本号

2.2、三个向量的取值方式

  • groupId:公司或组织域名的倒序,通常也会加上项目名称
    • 例如:com.atguigu.maven
  • artifactId:模块的名称,将来作为 Maven 工程的工程名
  • version:模块的版本号,根据自己的需要设定
    • 例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本
    • 例如:RELEASE 表示正式版本

举例:

  • groupId:com.atguigu.maven
  • artifactId:pro01-atguigu-maven
  • version:1.0-SNAPSHOT

3、坐标和仓库中 jar 包的存储路径之间的对应关系

坐标:

<groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version>

上面坐标对应的 jar 包在 Maven 本地仓库中的位置:

Maven本地仓库根目录\\javax\\servlet\\servlet-api\\2.5\\servlet-api-2.5.jar

三、如何创建 Maven 项目?

首先,确保你已经安装了 Maven,并且设置了 MAVEN_HOME 环境变量。接下来,你可以通过 Maven 命令行工具来创建一个新的项目:

mvn archetype:generate -DgroupId=com.company.project  -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

 这个命令会创建一个名为 my-project 的新项目,并使用 maven-archetype-quickstart 模板来生成初始的 POM 文件。

 

四、POM 文件结构

在创建一个 Maven 项目时,Maven 会自动生成一个初始的 POM 文件。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 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.company.project</groupId><artifactId>my-project</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>my-project</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
</project>

让我们逐一介绍这个文件中的每个部分:

modelVersion

这个元素指定了 POM 文件所使用的模型版本,目前使用的是 4.0.0。

groupId

这个元素指定了项目的组织 ID,通常是公司名称或组织名称。

artifactId

这个元素指定了项目的唯一标识符,通常是项目名称。

version

这个元素指定了项目的版本号,格式为 MAJOR.MINOR.PATCH。

dependencies

这个元素包含了该项目所依赖的其他库或框架。每个依赖都必须包含 groupId、artifactId 和 version 等元素。

build

这个元素包含了构建和打包项目时所需要的配置信息。其中,plugins 元素用于指定需要使用的插件。

五、如何添加依赖关系?

在 Maven 中,我们可以通过在 POM 文件中添加 dependencies 元素来定义项目的依赖关系。

要在 Maven 项目中添加依赖,我们需要做以下几个步骤:

  1. 找到需要添加的依赖的坐标信息,包括 groupId、artifactId 和 version 等。
  2. 在 POM 文件的 dependencies 元素中添加一个 dependency 元素,并填写坐标信息。
  3. 在命令行中运行 mvn install 命令,让 Maven 下载并安装依赖。

例如,如果我们想要在项目中添加 Spring Core 库作为依赖,我们可以在 POM 文件中添加以下内容:

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.0</version></dependency>
</dependencies>

 这个例子中,我们添加了 Spring Core 和 Spring Web 两个库作为项目的依赖关系。

六、依赖范围

在 Maven 中,每个依赖都有一个默认的范围,即 compile。这意味着该依赖将被编译到项目中,并在运行时可用。除此之外,还有以下几种范围:

  • provided:表示该依赖只在编译和测试时需要,但在运行时不需要。例如,Servlet API 就是一个 provided 类型的依赖。
  • runtime:表示该依赖在运行时需要,但在编译时不需要。例如,MySQL 驱动就是一个 runtime 类型的依赖。
  • test:表示该依赖只在测试时需要,而在编译和运行时都不需要。例如,JUnit 就是一个 test 类型的依赖。
  • system:表示该依赖类似于 provided 范围,但需要指定本地文件路径。这种依赖通常不推荐使用。

要指定依赖的范围,我们可以在 dependency 元素中添加 scope 元素。例如,如果我们想要将 junit 库作为测试依赖,可以添加以下内容:

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
</dependencies>