Maven是一个java项目管理工具。它基于项目对象模型(POM)的概念,可以从中央信息中管理项目的构建、报告以及文档。它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义在生命周期阶段中插件目标的逻辑。Maven的缺省构建规则具有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。Maven的主要目标是允许开发人员在最短的时间内了解开发工作的完整状态。

功能特点:
简单的项目设置,遵循最佳实践,在几秒钟内启动一个新的项目或模块
所有项目的一致使用意味着新开发人员进入项目的时间不会增加
优越的依赖关系管理包括自动更新,依赖关闭(也称为传递依赖关系)
能够同时轻松处理多个项目
图书馆和元数据的大量不断增长的库,使用开箱即用,以及最大的开放源码项目的安排,实时提供最新版本
可扩展,能够轻松地使用Java或脚本语言编写插件
即时访问新功能,很少或没有额外的配置
在Maven之外的依赖关系管理和部署的Ant任务
基于模型的构建:Maven能够根据项目的元数据将任意数量的项目构建到预定义的输出类型(如JAR,WAR或分发)中,而无需在大多数情况下执行任何脚本。
项目信息的相干站点:使用与构建过程相同的元数据,Maven可以生成一个网站或PDF,包括您需要添加的任何文档,并添加到有关项目开发状态的标准报告中。这些信息的例子可以在这个网站的左侧导航下的“项目信息”和“项目报告”子菜单的底部看到。
发布管理和分发发布:无需额外的配置,Maven将与您的源代码管理系统(如CVS)进行集成,并根据某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。Maven能够发布单个输出,例如JAR,包括其他依赖关系和文档的归档,或作为源分发。
依赖管理:Maven鼓励使用JAR和其他依赖关系的中央存储库。Maven提供了一个机制,您的项目的客户端可以使用它来从中央JAR存储库下载与Perl的CPAN类似的从项目构建所需的任何JAR。这允许Maven的用户在项目之间重用JAR,并鼓励项目之间的通信,以确保处理向后兼容性问题。
常用命令:
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类