简介

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. 虚拟机工作站创建虚拟机并安装Linux教程

    前言: 今天开始学习一下Linux,之前早就想看,但是一直没时间,最近把其他知识整理完了,终于有时间来看一下Linux了. 本节只是安装虚拟机工作站,虚拟机,和Linux操作系统的过程,详细的记录了我 ...

  2. python 连接sqlite及操作

    import sqlite3 #查询 def load(table): #连接数据库 con = sqlite3.connect("E:/Datebase/SQLiteStudio/Park ...

  3. [JSOI 2008]星球大战starwar

    Description 题库链接 给你一张 \(n\) 点, \(m\) 条边的无向图,每次摧毁一个点,问你剩下几个联通块. \(1\leq n\leq 2m,1\leq m\leq 200000\) ...

  4. HDU2108和HDU2036(叉乘)

    hdu2108 判断是否为凸边形 判断连续三点的叉乘 若为凸,内角<180:若为凹,内角>180 所以通过正负来判断 #include <iostream> #include ...

  5. poj 1873 凸包+枚举

    The Fortified Forest Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6198   Accepted: 1 ...

  6. 【RevolC FaeLoN Uva 10972】

    ·无向图转有向图,经典而美妙. ·英文题,述大意:       输入一个无向图(不一定联通),现在询问:是否可以将每一条无向边定向,并为新图添加最少的新的有向边,使得原图强联通. ·分析:       ...

  7. UVA 1146 Now or later

    The Terminal Radar Approach CONtrol (TRACON) controls aircraft approaching and departing when they a ...

  8. salt基本使用之二(2)

    1.Event和Reactor Event是saltstack里面的对每个事件的一个记录,相比job更加底层. 一,查看Event事件 可以在master下再开一个终端执行以下命令可以查看Event事 ...

  9. 在浏览器中运行Keras模型,并支持GPU

    Keras.js 推荐一下网页上的 demo https://transcranial.github.io/keras-js/#/ 加载的比较慢,但是识别的非常快. Run Keras models ...

  10. 关于mysql初始化以及安全策略无法修改的问题

    通过mysql官方的yum源来安装的mysql-community-server ,这里版本是MySQL 8.0. wget  rpm -ivh  mysql80-community-release- ...