简介

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. DDCTF 2018线上赛writeup

    第一题: d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e ...

  2. 从零开始搭建口袋妖怪管理系统(1)-从Angular1.x开始

    开坑,一直喜欢口袋妖怪,想着能写点有关的程序. 最近项目要改写管理系统,所以用Angular1.x搭建一个口袋妖怪管理系统试试. 巩固Ng1.x的知识+学习库的用法,然后算是记录一个系统从零开始到成型 ...

  3. TopCoder SRM 558 Div 1 - Problem 1000 SurroundingGame

    传送门:https://284914869.github.io/AEoj/558.html 题目简述  一个人在一个n * m棋盘上玩游戏,想要占领一个格子有两个方法: 在这个格子放一个棋子.  这个 ...

  4. ●BOZJ 2229 [Zjoi2011]最小割

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2229 题解: 首先先去看看这个博客:http://blog.csdn.net/jyxjyx2 ...

  5. hdu 5442 (后缀数组)

    稍微学习了下第一次用后缀数组- - , 强行凑出答案 , 感觉现在最大的问题是很多算法都不知道 ,导致有的题一点头绪都没有(就像本题).  /*推荐 <后缀数组——处理字符串的有力工具>— ...

  6. [Codeforces]871D Paths

    失踪OJ回归. 毕竟这样的数论没做过几道,碰上一些具体的应用还是无所适从啊.小C还是借助这题大致摸索一下莫比乌斯函数吧. Description 有n个点,标号为1~n,为这n个点建一张无向图.两个点 ...

  7. hdu 4453 splay

    Looploop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  8. [bzoj4162]shlw loves matrix II

    来自FallDream的博客,未经允许,请勿转载,谢谢 给定矩阵k*k的矩阵M,请计算 M^n,并将其中每一个元素对 1000000007 取模输出. k<=50 n<=2^10000 考 ...

  9. Linux学习之CentOS(十)----Linux 的账号与群组

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

  10. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...