Maven是一个项目管理工具,它包含了一个项目对象模型 一组标准集合,一个项目生命周期一个依赖管理系统,可以让用户更加清晰的查看项目的整体执行方案,他支持从项目的中西构建管理的命令采用标准的方法来构建项目、清楚的定义软件程序的核心,让程序员能够了解出现的运行流程,他支持大量的插件操作, 所有的工作都是由插件完成的。
软件功能
简单的项目设置遵循最佳实践 - 获得一个新的项目或模块在几秒钟内启动
所有项目中的一致使用意味着新开发人员没有加速到项目上的时间
高级依赖管理包括自动更新,依赖关闭(也称为传递依赖)
能够同时轻松处理多个项目
一个庞大且不断增长的图书馆和元数据库,用于开箱即用,并且安装了最大的开源项目,用于实时提供其最新版本
可扩展的,具有以Java或脚本语言轻松编写插件的能力
即时访问新功能,只需很少或不需要额外配置
在Maven之外的依赖管理和部署的Ant任务
基于模型的构建:Maven能够将任何数量的项目构建为预定义的输出类型,例如JAR,WAR或基于项目的元数据的分布,而不需要在大多数情况下执行任何脚本。
项目信息的相干站点:使用与构建过程相同的元数据,Maven能够生成一个网站或PDF,包括您希望添加的任何文档,并添加关于项目开发状态的标准报告。此信息的示例可以在本网站左侧导航栏底部的"项目信息"和"项目报告"子菜单下查看。
发布管理和分发版本:无需额外的配置,Maven将与您的源控制系统(如CVS)集成,并管理基于某个标签的项目的发布。它也可以将其发布到分发位置以供其他项目使用。Maven能够发布单个输出,例如JAR,包括其他依赖关系和文档的归档或作为源分发。
依赖管理:Maven鼓励使用JAR和其他依赖的中央存储库。Maven提供了一种机制,您的项目的客户可以使用它下载从中央JAR存储库构建项目所需的任何JAR,类似于Perl的CPAN。这允许Maven的用户跨项目重用JAR,并鼓励项目之间的通信,以确保处理向后兼容性问题。
软件特色
Maven的目标
Maven的主要目标是允许开发人员在最短的时间内理解开发工作的完整状态。为了实现这个目标,有几个关注领域,Maven试图处理:
使构建过程容易
提供统一的构建系统
提供优质的项目信息
提供最佳实践开发指南
允许透明迁移到新功能
使构建过程容易
虽然使用Maven不会消除了了解底层机制的需要,但Maven确实提供了很多的细节屏蔽。
提供统一的构建系统
Maven允许项目使用其项目对象模型(POM)和一组插件来构建,这些插件由使用Maven的所有项目共享,提供统一的构建系统。一旦你熟悉了一个Maven项目如何构建你自动知道所有Maven项目如何构建,以节省大量的时间,当试图导航许多项目。
提供优质的项目信息
Maven提供了大量有用的项目信息,这些信息部分取自您的POM,部分取自您的项目来源。例如,Maven可以提供:
更改直接从源代码控制创建的日志文档
交叉引用源
邮件列表
依赖列表
单位测试报告包括覆盖面
随着Maven改进提供的信息集将改进,所有这些都将对Maven的用户是透明的。
其他产品还可以提供Maven插件,允许他们的项目信息与Maven给出的一些标准信息一起,所有仍然基于POM。
使用方法
如何防止"[WARNING]使用平台编码(实际上是Cp1252)来复制过滤的资源,即构建是平台相关的!
这个或类似的警告是由处理纯文本文件但尚未配置为使用特定文件编码的插件发出的。所以消除警告只是一个问题,找出哪个插件发出它,以及如何配置文件编码。这很容易将以下属性添加到您的POM(或其父POM之一):
我如何设置Maven,以便它将编译与我选择的目标和源JVM?
您必须在pom中配置源参数和目标参数。例如,要将源和目标JVM设置为1.5,您应该在pom中:
我有一个jar,我想放入我的本地存储库。如何复制它?
如果你理解Maven仓库的布局,你可以将jar直接复制到它想要去的地方。Maven将在下次运行时找到此文件。
如果您对Maven存储库的布局不确信,那么您可以调整以下命令以在您的JAR文件中加载,所有这一切都在一行上。
处理网站中的特殊字符
配置您的ide以使用正确的编码。使用Eclipse,在eclipse.ini文件中添加 -Dfile.encoding = ISO-8859-1
在pom中配置输出编码
如何在我的依赖项中包含tools.jar?
以下代码包括Windows,Linux和Solaris上的JDK的tools.jar(它已包含在Mac OS X的运行时和一些免费的JDK中)。
Maven编译我的测试类,但不运行它们?
测试由surefire插件运行。surefire插件可以配置为运行某些测试类,并且您可能通过指定一个值到$ {test},无意中这样做。检查settings.xml和pom.xml中名为"test"的属性,这样的属性:
Maven XSD模式在哪里?
Maven XSD位于此处,Maven设置XSD位于此处。
您最喜欢的IDE可能支持用于pom.xml和settings.xml编辑的XSD模式。需要指定以下内容:
常见问题
如何防止在WEB-INF / lib中包括JAR?我需要一个"只编译"范围!
您应该使用的范围为此 提供。这表明Maven将在运行时通过其容器或JDK提供依赖关系。
具有此作用域的依赖关系不会在传递上传递,也不会捆绑在包(如WAR)中或包含在运行时类路径中。
Maven如何使我的开发过程受益?
Maven可以通过使用标准的约定和实践来加快开发周期,同时帮助您实现更高的成功率,从而为您的构建过程提供好处。
现在我们已经涵盖了一些Maven的历史和目的,让我们进入一些真实的例子,让你和Maven一起运行!
如何设置Maven?
Maven的默认值通常就足够了,但如果需要更改缓存位置或位于HTTP代理后面,则需要创建配置。有关详细信息,请参阅配置Maven指南。
如何使我的第一个Maven项目?
我们将跳过去创建你的第一个Maven项目!为了创建我们的第一个Maven项目,我们将使用Maven的原型机制。原型被定义为原始模式或模型,从中创建所有其他类型的东西。在Maven中,原型是项目的模板,它与一些用户输入相结合,以产生根据用户需求量身定制的工作Maven项目。