Maven的安装,环境变量配置及基本使用

bjynjj / 2024-11-11 / 原文

Maven 简介

Maven 是一个项目管理和构建自动化工具,专注于 Java 应用的开发。它通过项目对象模型(POM)来管理项目的构建、报告和文档。Maven 的主要特点包括依赖管理和项目信息管理。

Maven 的核心功能

  1. 依赖管理:Maven 能够管理项目中所有 jar 包的版本,确保团队成员和不同的开发环境使用相同版本的 jar 包,从而避免版本不一致导致的问题。

  2. 项目构建:Maven 将项目构建过程分解为一系列的阶段,如编译、测试、打包、部署等,每个阶段都可以通过 Maven 命令行工具执行。

  3. 跨平台:Maven 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。

  4. 中央仓库:Maven 提供了一个中央仓库,开发者可以从中获取所需的 jar 包,也可以将自己项目的 jar 包上传到中央仓库供他人使用。

  5. 插件和目标:Maven 拥有丰富的插件生态系统,每个插件都有一系列的目标(goals),这些目标定义了插件可以执行的任务。

Maven 的安装和环境变量配置

下载Maven

1.从 Apache Maven 官网或者阿里云镜像站下载 Maven 的二进制包。这里建议使用阿里云镜像站(https://mirrors.aliyun.com/apache/maven/maven-3/3.9.5/binaries/?spm=a2c6h.25603864.0.0.3194121eu7SXqa)。
image-20241023095816315
2.压缩包下载成功后解压到指定目录,这里以3.9.5版本为例
image-20241023100423902
3.新建maven仓库
image-20241023102252378

配置环境变量

  • 注意:(由于 Maven 是用 Java 编写的,因此需要先安装 JDK)
    1.找到settings.xml文件,使用记事本或VSCode打开
    image-20241023100937836
    2.找到localRepository,添加maven仓库路径,并复制到注释外使其生效
    image-20241023101758359
    3.阿里云镜像站链接(https://developer.aliyun.com/mirror/maven?spm=a2c6h.13651102.0.0.7be81b11a1a3vK)
    image-20241023102637528
    找到mirrors,添加阿里云镜像
    image-20241023102425521
    4.配置系统环境变量
    右击此电脑-->属性-->高级系统设置-->环境变量
    (1)新建系统变量,变量值是自己安装maven的根目录
    image-20241023103603033
    image-20241023103341458
    (2)找到path编辑添加如下内容
    image-20241023103836838

验证安装

在命令行中输入 mvn -v 来验证 Maven 是否安装成功。出现maven相关版本信息即为安装成功
image-20241023104906522

Maven的基本使用

创建Maven工程

image-20241023111727601

目录结构

src/main/java:存放主程序代码。
src/main/resources:存放配置文件。
src/test/java:存放测试代码。
src/test/resources:存放测试配置文件。
target:构建过程中生成的文件(需要运行代码,产生编译文件,后才会出现)。
image-20241023112542556

生命周期

Maven 的生命周期包括 Clean、Default 和 Site 三个部分,涵盖了从清理到构建、测试、打包、安装和部署的全过程。
image-20241023112857977

Maven 坐标

Maven 使用坐标(groupId, artifactId, version)来唯一标识一个项目或依赖。坐标定义了项目在本地仓库中的存储路径。

pom

配置文件

<?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>com.shujia</groupId>
    <artifactId>Bigdata32</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
//当前工程下的子工程
    <modules>
        <module>maven-Demo1</module>
        <module>maven-Demo2</module>
        <module>maven-Demo3</module>
    </modules>
//properties配置文件
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
//添加版本号,方便同一版本,子类中添加依赖时就不需要增加版本号
        <junit.version>4.13.2</junit.version>
        <hadoop.version>3.1.2</hadoop.version>
    </properties>
//添加依赖管理,添加后只有在子工程中用到时才会下载使用
    <dependencyManagement>
        <dependencies>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.49</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>


            <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                //使用${×××.version}引用版本号
                <version>${hadoop.version}</version>
            </dependency>


            <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>${hadoop.version}</version>
            </dependency>


            <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>${hadoop.version}</version>
            </dependency>

            <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>5.1.0</version>
            </dependency>


        </dependencies>

    </dependencyManagement>
</project>

继承关系

1、在同一个pom.xml文件中,若依赖相同只是版本号不同的话,后写的版本会将上面写的版本覆盖掉
image-20241023141246542

2、子工程若出现与父工程依赖相同但是版本不同的现象,子工程保持自己的依赖版本【会将父类依赖版本覆盖】
image-20241023142101446

3、若A工程中导入了B,C两个工程,且B,C两个工程中有相同的依赖只是版本号不同,那么最终使用的依赖版本是取决于谁先写
image-20241023145438906

Maven 依赖管理

依赖范围
compile:默认值,适用于所有环境。
test:仅在测试环境中有效。
image-20241023145704171
image-20241023145724595
image-20241023150251194
provided:在编译和测试时有效,但在运行时由容器提供,不可以被打包