目录
为什么使用Maven?
手工操作较多,项目的构建过程都是独立的,很难一步完成。比如:编译、测试、部署等。开发时每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错
以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多一个Jar包往往会报一些让人摸不着头脑的异常
Maven就是一款帮助程序员构建项目的工具,只需要告诉Maven需要哪些Jar 包,它会帮助下载所有的Jar,极大提升开发效率
Maven是什么?
Maven是一个项目管理和整合工具。Maven为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为Maven使用了一个标准的目录结构和一个默认的构建生命周期
在有多个开发团队环境的情况下,Maven能够在很短的时间内使得每项工作都按照标准进行。因为大部分的工程配置操作都非常简单并且可复用,在创建报告、检查、构建和测试自动配置时,Maven可以让开发者的工作变得更简单
Maven 能够帮助开发者完成以下工作:
①构建
②文档生成报告
③依赖
④SCMs
⑤发布
⑥分发
⑦邮件列表
Maven简化了工程的构建过程,并对其标准化。无缝衔接了编译、发布、文档生成、团队合作和其他任务。Maven提高了重用性,负责了大部分构建相关的任务
Maven历史
Maven最初是在Jakarta Turbine项目中为了简化构建过程而设计的;项目中有几个子工程,每个工程包含稍有不同的ANT文件。JAR文件使用CVS管理
Apache小组随后开发了Maven,能够同时构建多个工程、发布工程信息、部署工程、在几个工程中共享JAR文件,并且协助团队合作
Maven目标
(1)为开发者提供一个可复用、可维护、更易理解的工程综合模型
(2)为开发者提供与这个模型交互的插件或者工具
Maven工程结构和内容被定义在一个xml文件中pom.xml,是Project Object Model(POM)简称,此文件是整个Maven系统的基础组件
约定优于配置
Maven使用约定而不是配置,意味着开发者不需要再自己创建构建过程
开发者不需要再关心每一个配置细节。Maven为工程提供了合理的默认行为。当创建Maven工程时,Maven会创建默认的工程结构。开发者只需要合理的放置文件,而在pom.xml中不再需要定义任何配置
举例:下面的表格展示了工程源码文件、资源文件的默认配置,和其他一些配置。假定${basedir}表示工程目录
配置项 | 默认值 |
---|---|
source code | ${basedir}/src/main/java |
resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
distributable JAR | ${basedir}/target/classes |
为了构建工程,Maven为开发者提供了选项来配置生命周期目标和工程依赖(依赖于Maven的插件扩展功能和默认的约定)。大部分的工程管理和构建相关的任务是由Maven插件完成的。开发人员不需要了解每个插件是如何工作的,就能够构建任何给定的Maven工程
Maven常用命令
命令 | 描述 |
---|---|
mvn package | 打包 |
mvn compile | 编译 |
mvn test-compile | 编译测试程序 |
mvn clean | 清空 |
mvn clean deploy | 清空并将发布到指定位置 |
mvn test | 运行测试 |
mvn site | 生成站点目录 |
mvn site-deploy | 生成站点目录并发布 |
mvn install | 安装当前工程的输出文件到本地仓库 |