Maven
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
- 项目对象模型 (Project Object Model)
- 依赖管理模型(Dependency)
- 插件(Plugin)
仓库分类:
- 本地仓库:自己计算机上的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库
- 地址: https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库
当项目中使用坐标引入对应的依赖jar包后,首先会查找本地仓库,然后查找中央仓库。如果配置了远程仓库,则是本地仓库-》远程仓库-》中央仓库。
如果都找不到则会报错。
maven安装和配置
到maven官网下载对应的安装包,解压.
windows下载Binary zip archive即可。例如: apache-maven-3.8.6-bin.zip
Maven解压之后的文件:
- bin目录 : 存放的是可执行命令。mvn 命令重点关注。
- conf目录 :存放Maven的配置文件。
settings.xml
配置文件后期需要修改。 - lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。
添加环境变量:新建一个MAVEN_HOME
指向maven的根目录,然后在Path
中添加%MAVEN_HOME%\bin
,具体流程为:(老手可跳过)
- 右键我的电脑->属性->高级系统设置->环境变量
- 在下面系统那一栏点击新建,如下编辑,变量值为maven的根目录。
- 然后点击Path,新增一条即可。
此时可以打开cmd输入mvn --version
如果有输出结果就说明安装成功了。
- 配置本地仓库
修改 conf/settings.xml
中的 为一个指定目录作为本地仓库,用来存储jar包。
例如
<localRepository>D:\Software\apache-maven-3.8.4\local_repo</localRepository>
-
配置阿里云私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。在
conf/settings.xml
的mirrors
中添加:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
maven命令
compile
:编译:下载编译需要的jar包,在项目下生成一个target目录clean
:清理:清除target目录test
:测试:执行所有的测试代码package
:打包:在项目的target目录下有一个jar包(将当前项目打成的jar包)install
:安装:将当前项目打成jar包并安装到本地仓库。
生命周期:
clean
:清理工作defaul
t:核心工作,例如编译,测试,打包,安装等site
:产生报告,发布站点等,一般不会使用
同一套生命周期内,执行后面的命令,前面的命令会自动执行。
例如default:编译,测试,打包和安装是一个声明周期
如果只是编译:那么编译源文件为class文件并在项目下生成一个target目录,放在其中。
打包:将项目打包成jar包
安装:将项目安装到本地仓库中
IDEA中可以使用maven helper
插件,在settings - plugins
中搜索maven helper
并安装
然后右键项目,可以执行maven命令。
scope
参数:
compile
:作用于编译环境、测试环境、运行环境。(不指定则默认为compile)test
: 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值provided
:作用于编译环境、测试环境。例如servlet-api
,在使用它时,必须将scope
设置为该值,不然运行时就会报错(运行的时候不需要)runtime
: 作用于测试环境、运行环境。jdbc驱动一般将scope
设置为该值,当然不设置也没有任何问题