参考文章:https://www.cnblogs.com/kyleinjava/p/9549481.html
一、maven是什么
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
二、maven安装
1.去maven官网下载并解压maven,并配置环境变量
配置MAVEN_HOME
编辑Path,新增maven信息
配置完成后在命令行cmd 运行mvn -version 查询对应的版本号(出现版本号说明配置成功)
三、约定配置(目录结构)
Maven 提倡使用一个共同的标准目录结构,Maven 使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示:
目录 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目录 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}/src/main/resources | 项目的资源,比如说property文件,springmvc.xml |
${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的生命周期和相关命令
1.一个项目的构建过成通常包括清理、编译、测试、打包、集成测试、验证、部署等。Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件。
2.Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase。
3.maven常见的命令
validate:验证项目是正确的,所有必要的信息都是可用的 compile:编译项目的源代码 test:使用适当的单元测试框架测试编译后的源代码。这些测试不应要求将代码打包或部署 package:使用已编译的代码,并将其打包成可分布格式,例如JAR。 verify:对集成测试的结果进行任何检查,以确保满足质量标准 install:将包安装到本地存储库中,以便在本地其他项目中使用该包 deploy:在构建环境中完成,将最终的包复制到远程存储库中,以便与其他开发人员和项目共享。
这些生命周期阶段(加上这里没有显示的其他生命周期阶段)是按顺序执行的,以完成默认的生命周期。鉴于上面的生命周期阶段,这意味着当使用默认的生命周期时,Maven将会优先执行检查项目(validate),然后将会尝试编译源代码(compile),运行集成测试方案(test),验证了集成测试(verify),验证包安装到本地存储库(install),然后将安装包部署到远程存储库(deploy)。