Maven 简介及安装

2,555 阅读2分钟

这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

Maven

简介

MavenApaache组织中的开源项目,主要服务于基于Java平台的项目管理,依赖管理和信息管理。

为什么需要学习Maven

  • Javaweb开发中,需要使用大量的jar包,我们需要手动导入
  • 需要一个自动帮我们导入和配置这个jar

Maven因此诞生了!

Maven特性

  • 依赖管理系统

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>2.5.6</version>
            </dependency>
    
    • 包类型:jar包或war
    • groupId:用于表示实际项目-公司名称
    • artifactId:用于表示实际项目中的一个Maven模块-项目名
    • version:用于表示该项目的版本
  • 多模块构建

    我们可以将一个项目分解为多个模块。

  • 一致的目录结构

    maven的核心思想就是约定大于配置,并且制定了一套项目目录结构作为标准的Java项目结构。

  • 一致的构建模型和插件机制

Maven项目架构管理工具

依赖JDK

建议JDK版本在1.8以上

Maven安装

下载地址:maven.apache.org/download.cg…

image-20211127114132801.png

下载完成后解压即可,解压目录不要有空格和中文。

目录结构说明

  • bin:该目录包含了mvn运行的脚本,这些脚本用来配置java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。
  • boot:该目录下文件是一个类加载器,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,maven用该框架,加载自己的类库
  • conf:该目录下包含了一个非常重要的文件settings.xmlMaven核心配置文件
  • lib:该目录包含了所有Maven运行时需要的Java类库,``Maven本身是分模块开发的,此外这里还包含一些Maven`用到的第三方依赖

配置环境变量

  • M2_HOMEmaven目录下的bin目录
  • MAVEN_HOMEmaven目录
  • Path:在系统的path中配置 %MAVEN_HOME%\bin

验证

image-20211127120747439.png

验证发现有问题:

  • 重启电脑
  • 假如安装过多版本,查看是否有设置过的环境变量

阿里云镜像

一般访问外网获取依赖速度较慢,所以我们使用国内的镜像仓库。

  • 镜像:mirrors
  • 国内建议使用阿里云的镜像

打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加 mirror 子节点:

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

配置本地仓库

仓库一般分为两种:本地和远程仓库。

建立本地仓库:

打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<localRepository></localRepository>修改,默认配置地址是${user.home}/.m2/repository,我们将默认地址更换为${MAVEN_HOME}/repo:

  <localRepository>${MAVEN_HOME}/repo</localRepository>

Maven安装目录内创建repo文件夹

IDEA中使用Maven

IDEA中有默认的Maven配置,我们需要将Maven替换成我们自己的

image-20211127124127866.png

更换仓库后,IDEA会帮我们自动下载依赖。

Maven项目目录结构

目录说明
${basedir}存放pom.xml和所有子目录
${basedir}/src/main/java项目的java源代码
${basedir}/src/main/resources项目的资源,比如说配置文件
${basedir}/src/test/java项目的测试类
${basedir}/src/test/resources测试使用的资源