Maven介绍

Maven是apache旗下的一个开源项目

是一款用于管理和构建java项目的工具

Maven 在后端开发中扮演着重要的角色,特别是在 Java 后端开发中。以下是 Maven 和后端开发的关系:

  1. 依赖管理: 后端开发通常需要使用各种第三方库和框架来实现功能,例如数据库连接库、Web 框架、安全框架等。Maven 可以帮助管理这些依赖关系,简化了在项目中使用第三方库的过程,同时也确保了依赖库的版本管理和一致性。

  2. 项目构建: 后端项目通常会包含大量的代码文件、配置文件和资源文件,而 Maven 可以帮助自动化项目的构建过程。通过 Maven,开发人员可以定义项目的构建规则和步骤,包括编译源代码、打包可执行文件、生成文档等,从而简化了项目的构建过程。

  3. 标准化项目结构: Maven 规定了一套标准的项目结构,这使得后端项目更易于理解和维护。遵循 Maven 的约定,开发人员可以将后端项目组织成一组标准的目录结构,包括源代码目录、资源目录、测试目录等,从而提高了项目的可读性和可维护性。

  4. 插件支持: Maven 拥有丰富的插件生态系统,提供了各种各样的插件来扩展其功能。后端开发人员可以利用这些插件来实现自动化部署、持续集成、代码质量检查等功能,从而提高了开发效率和代码质量。

  5. 团队协作: Maven 提供了一种统一的项目管理和构建工具,可以帮助团队成员更好地协作。通过 Maven,团队成员可以共享项目配置文件、依赖信息和构建规则,确保了项目在不同开发环境中的一致性和稳定性。

综上所述,Maven 在后端开发中发挥着重要作用,它简化了项目的管理和构建过程,提高了开发效率和代码质量,同时也促进了团队协作和项目的可维护性。

maven这款工具

我们只需要创建一个maven工程

当我们配置完成后

maven会自动联网下载依赖

然后我们在项目中就能直接使用了

不同的Java开发工具项目结构是不同的

我们在IDEA写的项目不能直接导入eclipse中

如果使用了Maven能解决

因为Maven为我们提供了统一的项目结构

 

在Maven中提供了一套标准化的项目构建方式

我们所开发的Java项目如果要运行时

要用Javac编译 再进行测试 打包 发布项目

Maven将其标准化 构建了一套标准化的操作流程

 

 小结

 模型

构建生命周期的各个阶段

我们可以根据插件来实现各种功能

这样我们就可以完成maven项目标准化的构建

项目对象模型POM

指可以通过POM.XML这个配置文件来完成一小部分的工程

依赖资源 也可以进行配置

***可能公司里所有同事都连接这个仓库

只要有一个同事用到了架包

架包就能从中央仓库下载到远程仓库***

这样其他同事就不用再连接中央仓库了

Maven安装

官方网站

Maven – Download Apache Maven

1.解压安装

bin目录存放的是可执行文件

项目的编译 打包 等一系列指令

conf目录里放的是配置文件

lib里放的是maven里的架包资源

2.配置本地仓库

修改配置文件

将第53行复制出来

并且还要指定本地仓库的地址

这里我直接放到桌面上便于管理

3.配置阿里云的*** 以便加速架包的下载

<mirror>
		<id>alimaven</id>
		<mirrorOf>central</mirrorOf>
		<name>aliyun maven</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>

4.配置系统环境变量

这样就可以在任意目录下使用maven

我们先复制maven的安装目录

我的是

C:\Users\ZDY\Desktop\maven-3.9.6

然后再此电脑右键 属性 高级系统设置

点击环境变量

变量名为 maven的安装目录

接下来还要在path环境变量中

将maven下的bin目录加到环境变量中

这就代表我们要将maven安装目录下的bin加到path环境变量

这样我们在任意目录下就可以使用maven

测试是否安装成功

如果能看到版本就代表maven已经配置成功

IDEA配置Maven环境

绝大部分时候都是在IDEA中集成Maven进行使用

创建一个空项目

并且配置项目结构

随后就是配置Maven

手动去添加

再去设置配置和本地仓库

配置JRE

修改字节码版本

当然也可以一劳永逸

可以直接配置全局变量

直接设置所有的IDEA项目中所有的Maven配置

IDEA创建Maven项目

这样就得到了

main目录下面存放的是项目的资源 java是源代码 resources是配置文件

test目录下面存放的是 测试的资源 java是源代码

并不需要配置资源所以并不会生成 当然我们也可以自己生成

测试

 

 其中target文件夹里放的就是字节码文件

Maven的坐标

 

 

IDEA导入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>

    <groupId>org.example</groupId>
    <artifactId>untitled</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <!--依赖配置-->
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
    
</project>

小结

依赖传递

其实我们引入这一个架包

其他两个架包也会被引入

这就叫依赖传递

 

打开A项目的pom文件

A项目依赖B项目只需要通过依赖配置的方式依赖B项目的坐标

C项目依赖了一个工具包commons-io

打开Maven面板查看架构 会自动构建

IDEA里有一个可视化依赖传递的功能

可以打开 显示 可视图

排除依赖

A虽然依赖B 但是B中的junit就不会出现在A里

依赖范围

我们用一个标签scope来控制作用范围

举例

这样主程序就不能使用logback的依赖

只有测试中可以用

打包架包时打开目录时就不会包含logback的依赖

生命周期

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

就是描述项目的构建要经历哪些阶段

项目清理 项目编译 项目打包 项目部署

每一套生命周期都有一套体系 分为各个阶段

在一套生命周期运行后面的阶段进行项目的构建 前面的阶段也会运行

生命周期的各个阶段的执行方式

实际操作

跳过某一阶段

这样的话日志中会打印  

 用命令行执行maven指令

实际上Maven的生命周期和生命周期的各个阶段都是抽象的概念

他并不执行具体操作

具体操作是与Maven绑定的各种插件来执行的

因为Maven本质是一个插件执行框架

所有的操作都是插件来执行的、