一、Maven诞生
Maven是 年由Apache组织开源的一个项目,是跨平台(Windows、MAX、Linux)的项目管理工具, MAVEN被称为“专家”、“内行”。它主要服务于给予JAVA平台的项目构建、依赖管理和项目信息管理,提供一套项目开发的标准化创建过程。
何为项目构建
作为程序员,每天除了讨论需求、开发新功能、修BUG,开发和修BUG的过程中有相当大部分时间花在编译、运行单元测试、生成文档、打包和部署等繁琐且不起眼的工作上,就这就构建。 如果我们手动用IDE的命令一个个去做,成本会非常高;所以有没有一个软件能够让这一系列的工作能够自动化,仅仅需要几个命令就可以很快得到最终结果,把这部分时间解放出来呢?
何为依赖
作为程序员,我们开发项目不是每个轮子都需要去造,需要引用很多外部的构件。每个开源构件的公司发布构件的频率和方式不一样,存储的位置、发布的版本都不一样,一般一个项目会引用多个不同公司的开源构件,如果我们一个个去下载、会花费大量的手工时间,并且这些不同公司的开源构件可能还不兼容。又没有一个软件能够解决这些繁琐、耗时、易出错的工具呢?
对于解决这种问题的想法,JAVA工作者们都有个共识,这样的工具很必要,所以就出现了各种项目管理工具。 现在比较一下各种管理工具的优劣
二、MAVEN安装及环境变量
最新的Apache Maven版本是Apache Maven 3.6.3
下载地址:https://maven.apache.org/download.cgi?Preferred=https%3A%2F%2Fmirror.bit.edu.cn%2Fapache%2F
系统要求
项目 | 要求 |
JDK | Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上 |
内存 | 没有最低要求 |
磁盘 | Maven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。你本地仓库的大小取决于使用情况,但预期至少 500 MB |
操作系统 | 没有最低要求 |
设置 Maven 环境变量
右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,编辑系统变量 Path,添加变量值见如下图:
配置好之后,cmd打开命令行窗口,在命令行输入 mvn -version,则看到本机的maven版本如3.6.0,如下图
三、约定配置
Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 | 目的 |
${basedir} | 存放pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说property文件,springmvc.xml、application.yml等 |
${basedir}/src/test/java | 项目的测试类,比如说Junit代码 |
${basedir}/src/test/resources | 测试用的资源 |
${basedir}/src/main/webapp/WEB-INF | web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面 |
${basedir}/target | 打包输出目录 |
${basedir}/target/classes | 编译输出目录 |
${basedir}/target/test-classes | 测试编译输出目录 |
Test.java | Maven只会自动运行符合该命名规则的测试类 |
~/.m2/repository | Maven默认的本地仓库目录位置 |
并且Maven在命令行暴露的用户接口是统一的,像mvn clean install 这样的命令可以用来构建几乎任何的Maven项目。
三、MAVEN的依赖管理
1、仓库的种类及相互之间的关系
config/settings.xml 可以设置本地仓库的位置,默认是 ${user.home}/.m2/repository 也可以在localRepository 这个节点处重新定义本地仓库的位置: <localRepository>/path/to/local/repo</localRepository>
在idea项目中可以特别设置指定的settings.xml和Repository的位置
四、可用插件
- 构建插件将在构建期间执行,并且应
<build/>
在POM 中的元素中对其进行配置。 - 报告插件将在网站生成期间执行,并且应
<reporting/>
在POM 的元素中进行配置
clean;
compiler:编译JAVA源码
deploy
:将构建的工件部署到远程存储库。 是否他的坐标就可以被使用了?
install:
将已构建的工件安装到本地存储库中。