Maven是专门用于管理和构建Java项目的工具,提供一套标准项目结构、标准化的构建流程(编译、测试、打包、发布...)和一套依赖管理机制。
代码需要进行编译、测试、打包、发不,这些操作如果需要反复进行就会显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包(当前之前是老师已经下载好提供给大家了),复制到项目中,还要将jar包加入工作环境这一系列的操作。如下图所示
而Maven使用标准的坐标配置来管理各种依赖,只需要简单配置就可以完成依赖管理
创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
(Maven配置详见笔记Java web Maven&MyBatis)
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven 对项目构建的生命周期划分为3套:
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:
install
(安装)命令时,它会先执行 compile
命令,再执行 test
命令,再执行 package
命令,最后执行 install
命令。package
(打包)命令时,它会先执行 compile
命令,再执行 test
命令,最后执行 package
命令。(idea配置Maven详见笔记)
Maven坐标是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成:
注意:上面所说的资源可以是插件、依赖、当前项目。我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。
每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来介绍一种快捷引入坐标的方式:
上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成:
选择 Any changes,点击 ok 即可生效
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
scope取值范围如下: