简单了解 Maven,其实这一篇就够了!

2,525 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、Maven

(1)Maven是什么?Maven 是一个跨平台的项目管理工具。

(2)作用

  • 基于Java平台的项目的构建、依赖包管理和项目信息管理
  • 对项目提供一种依赖配置,配置好的项目,Maven会自动从我们设置的仓库中下载和管理jar包
  • Maven也提供了一种标准的项目目录结构,通过这种约定,大大减少了不同项目的学习成本

(3)运行原理

当我们在项目中配置依赖信息后,Maven会先从本地仓库查找是否存在相应的jar包,如果不存在则从镜像私服(前提是在setting.xml中配置了)中下载jar包,如果镜像私服也没有,则从中央仓库进行下载。

Maven 运行过程.png

(4)常用命令

命令说明
mvn compile编译项目
mvn clean清除项目的target
mvn test测试
mvn package打包
mvn install打包,本地仓库也会放一份

(5)Maven 项目树状结构图

Maven 项目树状结构图.png

(6)Maven中的坐标

  • 作用:标识项目或者依赖在仓库中的位置。
  • groupId:项目名称,一般使用公司域名倒写,唯一标识某一家公司
  • artifactId:Maven项目或模块名,区分同个公司不同项目
  • version:项目版本,区分同个项目不同时期版本

(7)依赖

  • scope

    • compile:默认,所有阶段
    • provided:编译和测试阶段使用
    • runtime:测试和运行阶段使用
    • test:测试阶段使用
  • 传递性:自己创建的项目依赖配置的jar包,配置的jar包可能依赖自身其它jar包,比如spring

二、普通Java Web项目转Maven项目

(1)右击项目名,选择Add Framework Support

web2maven-1.png

(2)勾选Maven,点击OK,项目就变成了maven项目结构,并生成maven项目中的src目录和pom.xml文件

web2maven-2.png

(3)将原先项目根目录下resources中的所有配置文件挪到src/main/resources下

这里提醒一下,如果直接挪动,可能会导致有的文件夹没有挪过去,所以建议右击目录后选择Show in Explorer,通过系统自带的文件资源管理器进行操作

web2maven-3.png

(4)在src/main目录下创建webapp文件夹,然后备份或记录web/WEB-INF/lib中的jar(目的是为了方便后面添加依赖),之后将lib整个文件夹删除,再将web下的所有文件夹挪到刚刚创建好的webapp中

同理,测试相关的文件也可以挪到src/test/java目录下,这里就不演示了

web2maven-4.png

(5)接下来就是删掉那些不再需要的目录,比如out、resources、test、web(resource是根目录下那个,别乱删哈)

(6)最后一步:添加依赖!拿出刚刚备份的jar或记录的jar包信息,然后在pom.xml文件中进行添加,推荐复制jar文件名,然后到Maven Repository这个网站搜索,直接复制依赖的配置信息。(除了jar配置信息,还有tomcat、项目编译运行版本等)

这里强调一下,由于普通的web项目可能没有配置maven的本地库信息,所以需要配置一下,否则,加载依赖会很慢很慢很慢...

web2maven-5.png

弄好上面那些,我们就可以运行啦!^_^

三、几个小问题

Problem 1

描述:启动项目后,访问资源时控制台打印如下信息:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See www.slf4j.org/codes.html#… for further details.

Maven问题1.png

原因:配置依赖时指定了只能测试时使用

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-log4j12</artifactId>
 <version>1.7.25</version>
 <scope>test</scope>
</dependency>

解决方法:删除test

Problem 2

描述:点开idea右侧Maven,发现项目名有红色波浪线

Maven问题2.png

原因: Maven安装目录的conf/setting.xml文件中有多个mirrors标签(这里为了方便演示将多个mirrors标签一起,实际中可能不是紧挨在一起,可以通过查找该标签确认)

Maven问题2原因.png

解决方法: 删除mirrors标签,只保留一个

Problem 3

描述:启动项目时,出现以下错误信息:不再支持源选项 5。请使用 7 或更高版本。

Maven问题3.png

原因:没有指定项目编译运行版本,而Maven默认配置的版本比较低,所以就报错喽

解决方法:在pom.xml中添加以下配置信息

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