简介

Maven,在意第绪语中意为对知识的积累。Maven最初用来在Jakarta Turbine项目中简化该项目的构建过程。Jakarta Trubine项目有多个工程,每个工程都有自己的多个Ant构建文件。每个工程的这些构建文件都只有一小部分不同,并且所有的Jar文件被使用CVS纳入了版本管理。我们想要实现一种标准方式去构建这些工程、明确定义这些工程的组成部分、简单的发布工程信息以及多个工程间共享Jar包。

就这样,一个能够构建和管理任何基于java的工程的工具诞生了。我们希望我们做的这些事情能够简化Java开发者日复一日的工作,并有助于他们对任何基于Java的项目的理解。

Maven的目标

Maven的主要目标是希望开发者能在最短的时间内理解开发的完整状态。为了达到这个目标,Maven在以下几个方面做出了努力:

  • 简化构建过程
  • 统一构建体系
  • 提供高质量的项目信息
  • 提供开发的最佳实践指南
  • 实现透明的向新特性的迁移

简化构建过程

使用Maven不需要知道一些潜在的或底层的机制,Maven屏蔽了很多细节。

统一构建体系

Maven通过使用工程对象模型(project object model POM)以及一系列可共享的插件来构建工程。只要你熟悉了怎么构建一个Maven工程,你就自然知道了怎么构建所有的Maven工程。这种统一的构建体系可以节省大量的了解工程结构的时间。

提供高质量的项目信息

Maven提供了很多有用的工程信息,这些信息一部分来自于工程的POM文件,一部分来自原工程源码。Maven可以提供以下信息:

  • 从源码控制处生成的修改日志文档
  • 交叉引用源码
  • 开发者邮件列表
  • 项目依赖列表
  • 包含覆盖率的单元测试报告

Maven改进了工程信息的提供,所有这些信息对Maven用户来说都是透明的。

Maven还允许其他人提供Maven插件来获取工程信息,与Maven获取的标准信息同样处理。这些都需要基于POM来完成。

提供开发的最佳实践指南

Maven致力于收集现有的开发的最佳实践原则,并以此来简化工程的开发。

例如:规范,执行,和单元测试报告是正常使用Maven构建周期的一部分。目前Maven中的单元测试最佳实践如下:

  • 将测试源码放在一个单独的,但与主代码同级的位置
  • 使用测试用例命名规范来定位和执行测试
  • 让测试用例本身去设置测试环境,不要为了测试而专门构建环境

Maven 在工程的目录结构上也给出了许多最佳实践指南。遵守了这些工程目录结构指南后,如果你了解了这种目录结构,你也就会容易的了解其他所有遵循了这种目录结构的Maven工程。

实现透明的向新特性的迁移

Maven为使用者提供了一种简单的方式去更新他们已经install的工程,这使得用户可以获取到基于Maven对工程作出的任何变化。

基于以上原因,install新的工程、从第三方或Maven本身更新插件变得非常容易和常见。

Maven不是什么?

你或许听说过以下关于maven的描述:

  • Maven是一个网站和文档工具
  • Maven继承于Ant,可以让你下载工程依赖
  • Maven是一系列可复用的Ant脚本的集合

Maven确实做了以上这些事情,这可以从“Maven是什么”一节中看到。但这些不是Maven仅有的特性,mavan的目标不止于此。

Maven确实鼓励最佳实践,但由于一些历史原因,我们对一些工程的实现可能没有遵循这些最佳实践。虽然Maven被设计为有弹性的,在一定程度上,为了满足不同工程的需要,为了达到所有的目标,我们做出了一些妥协,以使Maven能满足每一种情况。

如果你决定了使用Maven,但是你的工程目录结构与Maven推荐的不一样而你无法重新组织,你可能需要放弃一些Maven特性,不能完全的使用Maven了。

原文来自于Maven官网:What is Maven?

Maven简介(Maven是什么)的更多相关文章

  1. maven 简介 —— maven权威指南学习笔记(一)

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(ProjectLifecycl ...

  2. maven简介及基础使用

    一.Maven简介 Maven可译为"知识的积累"."专家",主要服务于基于Java平台的项目构建.依赖管理和项目信息管理. 1.Maven-项目构建工具    ...

  3. maven 简介

    本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...

  4. 学习笔记-[Maven实战]-第一章:Maven简介

    Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...

  5. (一)《Maven实战》读书笔记 —— Maven简介

    第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个个颇为成功的开源项 ...

  6. [JavaEE] Maven简介

    转载自:百度 http://baike.baidu.com/view/336103.htm?fr=aladdin 一.简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构 ...

  7. 【项目管理和构建】——Maven简介(一)

    在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的.当然,管理可以说有很多的方面,例如:对人员的管理,也有对项目的管理等等.如果你 ...

  8. 框架学习笔记之Maven简介和配置

    一.什么是Maven?★Maven可翻译为“知识的积累”.“专家”.“内行”,它是一个跨平台的项目管理工具.★Maven提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成项目的基础工具建设 ...

  9. Maven学习笔记【1】 -- Maven简介

    本文主要讲Maven的基础知识. 一 什么是Maven? Maven是一个项目管理工具.Maven提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档.最强大的功能就是能够自动下 ...

随机推荐

  1. java中抽象类和接口之间的异同点

      抽象类 接口 声明方式 abstratc class ClassName interface ClassName 包含内容 构造方法,普通方法,抽象方法.static方法 .变量常量 全局常量.抽 ...

  2. 【linux之压缩归档,tar】

    一.压缩和归档 压缩算法就是等量代换 gzip FILE1 FILE2... 扩展名 .gz -#(数字):#代表压缩等级,1-9,默认6 -d(compression):解压缩 -r:递归的压缩目录 ...

  3. Caffe+VS2015+python3的安装(基于windows)

    在网上找了许多安装Caffe的教程 感觉全都是杂乱无章的 而且也没有详细的 只能自己当小白鼠来实验一次了 本次配置:CUDA 8.0+ CUDNN  +VS 2015 +Python 3.5 + Ca ...

  4. 从三个开源项目认识OpenFlow交换机 - OVS

    在SDN/NFV的网络革新技术浪潮的引领下,催生了诸多数据面开源方案的诞生.业界知名度较高的有OVS(Open vSwitch).FD.io (Fast Data I/O).ODP(Open Data ...

  5. [HNOI 2003]消防局的设立

    Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成 ...

  6. POJ1222熄灯问题

    千年老题,以前用枚举做,现在用高斯消元做 自由元直接做成0即可 #include<cstdio> #include<cstdlib> #include<algorithm ...

  7. dev gridcontrol 无法编辑 解决方案

    1.确认表格打开编辑 gridView1.OptionsBehavior.Editable = True 2.确认列打开编辑 gridView1.Columns("Name").O ...

  8. 查询优化--ORDER BY查询优化

    Mysql 系列文章主页 =============== ORDER BY 子句,尽量使用 Index 查询,避免使用 FileSort 排序 尽可能在索引列上完成排序操作,遵照索引的最佳左前缀原则 ...

  9. Nginx+tomcat配置集群负载均衡

    开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的a ...

  10. manjaro备忘录

    updated 2018/4/3 manjaro 使用Linux发行版时需要注意几个方面的问题: 包管理器 包管理器无疑时各家发行版的最大特色之一.软件同时也是一个平台是否能够产生足够的吸引力的来源之 ...