简单了解 Maven,其实这一篇就够了!
本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、Maven
(1)Maven是什么?Maven 是一个跨平台的项目管理工具。
(2)作用 - 基于Java平台的项目的构建、依赖包管理和项目信息管理 - 对项目提供一种依赖配置,配置好的项目,Maven会自动从我们设置的仓库中下载和管理jar包 - Maven也提供了一种标准的项目目录结构,通过这种约定,大大减少了不同项目的学习成本
(3)运行原理
当我们在项目中配置依赖信息后,Maven会先从本地仓库查找是否存在相应的jar包,如果不存在则从镜像私服(前提是在setting.xml中配置了)中下载jar包,如果镜像私服也没有,则从中央仓库进行下载。
(4)常用命令
| 命令 | 说明 | | :-----------: | :------------: | | mvn compile | 编译项目 | | mvn clean | 清除项目的target | | mvn test | 测试 | | mvn package | 打包 | | mvn install | 打包,本地仓库也会放一份
(5)Maven 项目树状结构图
(6)Maven中的坐标 - 作用:标识项目或者依赖在仓库中的位置。 - groupId:项目名称,一般使用公司域名倒写,唯一标识某一家公司 - artifactId:Maven项目或模块名,区分同个公司不同项目 - version:项目版本,区分同个项目不同时期版本
(7)依赖
-
scope
- compile:默认,所有阶段
- provided:编译和测试阶段使用
- runtime:测试和运行阶段使用
- test:测试阶段使用
-
传递性:自己创建的项目依赖配置的jar包,配置的jar包可能依赖自身其它jar包,比如spring
二、普通Java Web项目转Maven项目
(1)右击项目名,选择Add Framework Support
(2)勾选Maven,点击OK,项目就变成了maven项目结构,并生成maven项目中的src目录和pom.xml文件
(3)将原先项目根目录下resources中的所有配置文件挪到src/main/resources下
这里提醒一下,如果直接挪动,可能会导致有的文件夹没有挪过去,所以建议右击目录后选择Show in Explorer,通过系统自带的文件资源管理器进行操作
(4)在src/main目录下创建webapp文件夹,然后备份或记录web/WEB-INF/lib中的jar(目的是为了方便后面添加依赖),之后将lib整个文件夹删除,再将web下的所有文件夹挪到刚刚创建好的webapp中
同理,测试相关的文件也可以挪到src/test/java目录下,这里就不演示了
(5)接下来就是删掉那些不再需要的目录,比如out、resources、test、web(resource是根目录下那个,别乱删哈)
(6)最后一步:添加依赖!拿出刚刚备份的jar或记录的jar包信息,然后在pom.xml文件中进行添加,推荐复制jar文件名,然后到Maven Repository这个网站搜索,直接复制依赖的配置信息。(除了jar配置信息,还有tomcat、项目编译运行版本等)
这里强调一下,由于普通的web项目可能没有配置maven的本地库信息,所以需要配置一下,否则,加载依赖会很慢很慢很慢...
弄好上面那些,我们就可以运行啦!^_^
三、几个小问题
Problem 1
描述:启动项目后,访问资源时控制台打印如下信息:\ SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". \ SLF4J: Defaulting to no-operation (NOP) logger implementation \ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
原因:配置依赖时指定了只能测试时使用
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
解决方法:删除
Problem 2
描述:点开idea右侧Maven,发现项目名有红色波浪线
原因: Maven安装目录的conf/setting.xml文件中有多个mirrors标签(这里为了方便演示将多个mirrors标签一起,实际中可能不是紧挨在一起,可以通过查找该标签确认)
解决方法: 删除mirrors标签,只保留一个
Problem 3
描述:启动项目时,出现以下错误信息:不再支持源选项 5。请使用 7 或更高版本。
原因:没有指定项目编译运行版本,而Maven默认配置的版本比较低,所以就报错喽
解决方法:在pom.xml中添加以下配置信息
- 正则表达式悲观回溯
- 工具-能写会看正则表达式
- 如何使用Go正则表达式(二)
- 简单了解 Maven,其实这一篇就够了!
- 特斯拉人形机器人『擎天柱』将亮相AI DAY;Go语言绝美图文教程;正则表达式的救星网站;食品Logo检测数据集;前沿论文 | ShowMeAI资讯日报
- iOS小技能:使用正则表达式对聊天记录的关键词进行监控
- 「正则表达式」全解
- 整理了几个Python正则表达式,拿走就能用!
- 一个换行符为什么可以绕过认证?
- 每个人都能用点正则表达式
- 理论与实践:如何写好一个方法
- 有了这个库,以后再也不用写正则表达式了!
- 【突然想多了解一点】可以用 Task.Run() 将同步方法包装为异步方法吗?
- 刘亦菲生日当天,引发了我对正则的思考
- JS replaceAll 和 matchAll 使用指南不指北
- 如何正则匹配乱码?
- 超全的正则表达式速查手册,运维赶快收藏!
- python使用正则表达式从json字符串中取出特定字段的值
- 全面学习正则表达式 - 从原理到实战
- 手把手教你实现 Tree 组件搜索过滤功能,干货满满!