网页后端开发(基础1--maven)

maven的作用:

Maven是一款管理和构建Java项目的工具。

1.依赖管理

方便快捷的管理项目依赖的资源(jar包)

不用手动下载jar包,只需要中maven中引用,maven会查找本地仓库。若本地仓库没有,会直接向远端仓库发送下载请求,自动下载jar包。

Maven 仓库是存放构件的地方,主要分为两大类:本地仓库远程仓库

本地仓库

本地仓库是存放在用户计算机上的一个目录,Maven 在查找构件时首先会在本地仓库中查找。如果本地仓库中存在所需的构件,Maven 会直接使用它们。默认情况下,本地仓库位于用户目录下的 .m2/repository/ 目录中1

远程仓库

如果本地仓库中没有找到所需的构件,Maven 会去远程仓库查找。远程仓库又可以分为三种:

  1. 中央仓库 :这是 Maven 自带的远程仓库,包含了绝大部分开源的构件。当本地仓库没有所需的构件时,Maven 会尝试从中央仓库下载1

  2. 私服 :这是一个特殊的远程仓库,通常架设在局域网内,用来代理所有的外部远程仓库。私服可以节省带宽,提高下载效率,并且便于部署第三方构件1

  3. 其他公共仓库 :除了中央仓库和私服外,还有很多其他公开的远程仓库,如 java.net Maven 库和 JBoss Maven 库1

maven中引用示例

XML 复制代码
<!--引入依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.4</version>
        </dependency>
    </dependencies>

若本地仓库没有,则会直接从远端仓库下载 org.springframework的jar包。

2.项目构建:

标准的跨平台的自动化项目构建方式(Linux,Window,MacOS)

在IDEA中创建maven文件,会自动化生成固定格式,并且附带生存期和插件。

3.统一项目结构:

提供标准,统一的项目结构

Java主流编译软件:Eclipse,MyEclipse,IntelliJ IDEA

这些软件生成的Java文件格式不同,无法相互导入。

使用maven即可解决,maven提供统一的标准,不同编译软件之间可以相互使用。

Maven核心

**Maven概述:**Maven是项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一段描述信息来管理项目的构建。

官网:https://mvnrepository.com/

Maven结构: pom.xml--->三部分:项目对象模型(POM),依赖管理模型,构建生命周期/阶段。

项目对象模型(POM)

XML 复制代码
<?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>

    <groupId>org.cyyWeb</groupId>
    <artifactId>maven-project01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--SNAPSHOT是开发中的版本-->
    <!--Release是正式版本-->

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

pom由

<groupId>org.cyyWeb</groupId>

<artifactId>maven-project01</artifactId>

<version>1.0-SNAPSHOT</version>

<properties>

<maven.compiler.source>17</maven.compiler.source>

<maven.compiler.target>17</maven.compiler.target>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

组成。

<groupId>org.cyyWeb</groupId>

<artifactId>maven-project01</artifactId>

<version>1.0-SNAPSHOT</version>

是项目的基本信息。其中

groupId是当前Maven项目隶属的组织名称,通常为域名反写。

artifactId是当前Maven项目的名称。

version用来定义当前的版本号。(SNAPSHOT是开发中的版本,Release是正式版本)

<properties>.........</properties>表示JDK的信息,包含JDK的版本。此实验使用JDK17进行实验。

依赖管理模型

XML 复制代码
<!--引入依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.4</version>
        </dependency>
    </dependencies>

<dependencies>

<dependency>

<groupId>..........</groupId>

<artifactId>.........</artifactId>

<version>.......</version>

</dependency>

</dependencies>

用来引入依赖,即导入jar包。本地仓库没有时,自动访问远端仓库进行下载。

构建生命周期/阶段

生命周期与插件紧密联系,运行什么生命周期,调用相对应的插件。

Maven的依赖管理

依赖配置

配置

1.编写<dependencies> </dependencies>标签

2.在<dependencies> </dependencies>中,使用<dependency> </dependency>引入坐标

3.定义坐标的<groupId>....</groupId>,<artifactId>....</artifactId>,<version>..</version>

groupId是引入依赖的组织名称。

artifactId是引入依赖的名称。

version用来定义引入依赖的版本号。

4.点击刷新,引入最新加入的坐标。

若不知道依赖的坐标,可以访问官网查找。

官网:https://mvnrepository.com/

排除依赖

排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。

在<dependency> </dependency>中使用<exclusions>..</exclusions>排除依赖。

XML 复制代码
<?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>

    <groupId>org.cyyWeb</groupId>
    <artifactId>maven-project01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--SNAPSHOT是开发中的版本-->
    <!--Release是正式版本-->

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--引入依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.4</version>

            <!--排除依赖-->
            <exclusions>
                <exclusion>
                    <groupId>io.micrometer</groupId>
                    <artifactId>micrometer-observation</artifactId>
                </exclusion>
            </exclusions>

        </dependency>
    </dependencies>

</project>

注意事项

1.一旦依赖配置变更了,需要重新加载

2.引入的依赖本地仓库不存在时,需要联网在远端仓库进行下载。

生命周期

Maven的生命周期是为了对所有Maven项目构建过程进行抽象和统一。

Maven有三套相互独立的生命周期:

clean:清理工作。

default:核心工作,如:编译,测试,打包,安装,部署等。

site:生成报告

每套生命周期都包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段。

在同一套生命周期中,当后面阶段运行时,前面的阶段也会运行。

例如:当运行install时,dsfault要从validate运行至install

执行生命周期的两种方式:

1.在idea中,右侧的maven工具栏,选择对应的生命周期,双击运行。

2.在命令行中,通过命令执行。

在项目文件夹中,在上方文件目录中输入cmd,回车。

在命令行中输入mvn clean,执行清理工作。

生命周期与插件:

在执行生命周期时,其本质是调用了对应的插件,完成工作。