Maven——管理和构建Java项目的工具

8 阅读3分钟

Maven 是一款项目构建与依赖管理工具, 主要作用如下:

  1. 依赖管理:自动管理项目用到的 jar 包。只需要在配置文件pom.xml里写依赖坐标,Maven 会自动从仓库下载对应的 jar 包,不用手动复制、导入 jar 包,也能解决 jar 包之间版本冲突问题。
  2. 项目构建:提供一套标准化项目结构,统一编译、测试、打包、安装、部署流程。一条命令就能完成项目编译、运行、打包,不用手动配置编译环境。
  3. 标准化项目结构:所有 Maven 项目目录结构统一,方便团队协作,大家拿到项目就能快速看懂代码位置。
  4. 仓库管理:分为本地仓库、中央仓库、私服,用来存放 jar 包。下载过的包保存在本地,多个项目可以复用。

使用Maven配置jar包: 打开iDEA,找到最左侧的Maven文件,下面有一个pom.xml的文件,双击打开

image.png

可以直接在里面配置所需要的jar包,系统会帮我们下载好,并且加入到当前项目中来,这里我选择的是2.11.0版本:

image.png 配置完成后,最右侧会多出来一个依赖项:

image.png

这就表示已经配置好了

前面提到过Maven可以对项目进行构建,构建的操作包括了:编译、测试、打包、发布,我们可以在iDEA的右侧的生命周期中双击进行对应的操作,非常方便:

image.png

Maven坐标:

  • Maven 中的坐标是资源 (jar) 的唯一标识,通过该坐标可以唯一定位资源位置。
  • 使用坐标来定义项目或引入项目中需要的依赖。

Maven坐标的主要组成:

  • groupId:定义当前 Maven 项目隶属组织名称(通常是域名反写,例如:com.itheima)
  • artifactId:定义当前 Maven 项目名称(通常是模块名称,例如 order-service、goods-service)
  • version:定义当前项目版本号
<groupId>com.itheima</groupId>
<artifactId>maven-project01</artifactId>
<version>1.0-SNAPSHOT</version>  
    //版本后有SNAPSHOT表示该功能不稳定、尚处于开发中的版本,即快照版本
    //RELEASE:功能趋于稳定、当前更新停止,可以用于发行的版本
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.27</version>
</dependency>

在iDEA里导入Maven项目可以按照如下步骤进行操作,有两种方式:

image.png

image.png

依赖配置和排除依赖:

依赖配置:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

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

<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>

代码作用是引入spring-context:6.1.4,但是不要自动拉取它自带的 micrometer-observation 这个依赖包

Maven依赖范围:

依赖的 jar 包,默认情况下,可以在任何地方使用。可以通过 <scope>...</scope> 设置其作用范围。

作用范围:

  • 主程序范围有效。(main 文件夹范围内)
  • 测试程序范围有效。(test 文件夹范围内)
  • 是否参与打包运行。(package 指令范围内)

范围表:

scope 值主程序测试程序打包(运行)范例
compile(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc 驱动

Maven常见问题及解决办法:

如果出现了下图所示当中的红色报错,则可能是由于网络原因,依赖没有下载完整导致的,在 maven 仓库中生成了xxx.lastUpdated文件,该文件不删除,不会再重新下载: image.png

解决办法:

打开cmd,通过命令del /s *.lastUpdated批量递归删除指定目录下的xxx.lastUpdated文件,删除之后重新加载项目即可。