Maven

转载 2015年07月07日 16:24:11
Maven是什么,以及为什么要使用Maven
参考书籍(推荐大家购买实体书):《Maven实战》(国内首本Maven著作)(Maven的安装、配置及使用入门)

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.

Maven是用Jelly作为自己的脚本语言,因此在编写自己的Goal时,需要了解一些Jelly的基本知识.在Maven中,还有一些配置文件,如:project.xml,maven.xml,project.properties等.project.xml是项目的主配置文件,没有该文件Maven是不能执行的.文件中包含的属性,元素可以参考它的xsd文件.一般在make java app时,都会应用很多其它的jar文件,在Maven中它提供了Repository,在这里它存有很多的jar文件.当然,在Repository中也存有Maven执行的一些类库文件.如果,你第一次运行Maven时,它会从网上的Repository下载需要的类库.如果此时,网络是断的,就不行了.运行Maven的site:generate,可以生成一个关于项目信息和项目报告的网站,所有的页面都是html格式的.其中,包含非常丰富的项目信息:项目组成员,邮件列表,单元测试,javadoc等等.这样,就可以让人能大致把握住项目的概括.

1.概述
Maven是一个构建工具,服务与构建.使用Maven配置好项目后,输入简单的命令,如:mvn clean install,Maven会帮我们处理那些繁琐的任务.
Maven是跨平台的.
Maven最大化的消除了构建的重复.
Maven可以帮助我们标准化构建过程.所有的项目都是简单一致的,简化了学习成本.
总之,Maven作为一个构建工具,不仅帮我们自动化构建,还能抽象构建过程,提供构建任务实现.他跨平台,对外提供一致的操作接口,这一切足以使他成为优秀的,流行的构建工具.
但是Maven不仅是构建工具,他还是一个依赖管理工具和项目信息管理工具.他还提供了中央仓库,能帮我们自动下载构件.
使用Maven还能享受一个额外的好处,即Maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Convention Over Configuration)。


2.对比,Maven,IDE,Mark,Ant
a.IDE:基本上所有的主流IDE都集成了Maven,我们可以在IDE中方便的运行Mave执行构建.IDE依赖大量的手工操作。编译、测试、代码生成等工作都是相互独立的,很难一键完成所有工作。手工劳动往往意味着低效,意味着容易出错很难在项目中统一所有的IDE配置,每个人都有自己的喜好。也正是由于这个原因,一个在机器A上可以成功运行的任务,到了机器B的IDE中可能就会失败。
所以,要合理使用IDE,不过多依赖.Maven是专家.

b.Make也许是最早的构建工具,具体不详,没用过,可以不了解.Make的强大之处在于它可以利用所有系统的本地命令,尤其是UNIX/Linux系统,丰富的功能、强大的命令能够帮助Make快速高效地完成任务。
但是,Make将自己和操作系统绑定在一起了。也就是说,使用Make,就不能实现(至少很难)跨平台的构建,这对于Java来说是非常不友好的。此外,Makefile的语法也成问题,很多人抱怨Make构建失败的原因往往是一个难以发现的空格或Tab使用错误。


c.Ant是意指“另一个整洁的工具”(Another Neat Tool),它最早用来构建著名的Tomcat,其作者James Duncan Davidson创作它的动机就是因为受不了Makefile的语法格式。我们可以将Ant看成是一个Java版本的Make,也正因为使用了Java,Ant是跨平台的。此外,Ant使用XML定义构建脚本,相对于Makefile来说,这也更加友好。
和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。
Ant是没有依赖管理的,所以很长一段时间Ant用户都不得不手工管理依赖,这是一个令人头疼的问题。幸运的是,Ant用户现在可以借助Ivy管理依赖。而对于Maven用户来说,依赖管理是理所当然的,Maven不仅内置了依赖管理,更有一个可能拥有全世界最多Java开源软件包的中央仓库,Maven用户无须进行任何配置就可以直接享用。

3.Maven与极限编程
极限编程(XP)是近些年在软件行业红得发紫的敏捷开发方法,它强调拥抱变化。
首先看一下Maven如何帮助XP团队实现一些核心价值:
?简单。Maven暴露了一组一致、简洁的操作接口,能帮助团队成员从原来的高度自定义的、复杂的构建系统中解脱出来,使用Maven现有的成熟的、稳定的组件也能简化构建系统的复杂度。
?交流与反馈。与版本控制系统结合后,所有人都能执行最新的构建并快速得到反馈。此外,自动生成的项目报告也能帮助成员了解项目的状态,促进团队的交流。


Maven几乎能够很好地支持任何软件开发方法。

例如,在传统的瀑布模型开发中,项目依次要经历需求开发、分析、设计、编码、测试和集成发布阶段。从设计和编码阶段开始,就可以使用Maven来建立项目的构建系统。在设计阶段,也完全可以针对设计开发测试用例,然后再编写代码来满足这些测试用例。然而,有了自动化构建系统,我们可以节省很多手动的测试时间。此外,尽早地使用构建系统集成团队的代码,对项目也是百利而无一害。最后,Maven还能帮助我们快速地发布项目。

Maven真的有那么好吗

http://1.1lifes.sinaapp.com/?p=202 之前一直听说maven的大名,直到它后来者居上,但因为工作环境,一直没有使用过maven,对它的很多功能都很期待...
  • yq76034150
  • yq76034150
  • 2012年01月03日 16:49
  • 6812

百度云推送集成之Maven方式

现在自己的产品没有推送功能都不好意思出门啊! 前段时间做推送需求的时候,经过几轮测试最后敲定的用百度云推送。 百度云推送集成非常方便,端上大概半天不到就搞定了,官网给的教程非常给力,详细而又全面。...
  • puyuanbo
  • puyuanbo
  • 2016年01月06日 20:01
  • 3367

Maven学习(十八)-- Maven最佳实践:版本管理

找到了一篇博客,很多啊,是讲Maven中的版本管理的,很好,分享一下, 原文作者:juvenshun 原文地址:http://juvenshun.iteye.com/blog/...
  • m261030956
  • m261030956
  • 2015年06月13日 12:57
  • 643

使用maven搭建多模块项目

我们为什么要进行模块化开发?在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署。我们假设有这样一个商城项目,包括以下几个模块:...
  • u011404265
  • u011404265
  • 2017年02月06日 11:33
  • 3419

maven本地私服的搭建

maven本地私服的搭建
  • whh743
  • whh743
  • 2016年12月10日 21:46
  • 3243

1、Maven是什么及其优点

(1)平时我们开发项目时,一般都是一个项目就是一个工程。我们划分模块时,都是使用package来进行划分。但是,当项目很大时,有很多子模块时,即使是package来进行划分,也是让人眼花缭乱。    ...
  • sword_anyone
  • sword_anyone
  • 2017年04月24日 10:38
  • 1214

maven 简单入门教学

Maven那点事儿(Eclipse版) 前言:   由于最近工作学习,总是能碰到Maven的源码。虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下。这篇文章不是一个...
  • maple980326
  • maple980326
  • 2016年08月03日 15:51
  • 4638

【Maven】IKAnalyzer 在Maven Repository不存在

1、在mvnrepository里面找IKAnalyzer,这个中文分词包,一直没有找到,找到github,发现是一个国人写的, http://mvnrepository.com/search?q=...
  • Dracotianlong
  • Dracotianlong
  • 2015年07月17日 19:06
  • 18455

Maven详解之------maven版本管理

使用Maven进行项目的版本管理,以及注意事项
  • wanghantong
  • wanghantong
  • 2014年11月18日 00:10
  • 48174

Maven安装与环境配置(Windows)

注意:Maven3以上版本要求安装jdk1.7以上版本。 1、下载安装包在Maven官网下载最新版的安装包:http://maven.apache.org/download.cgi2、解压安装包3、配...
  • xyang81
  • xyang81
  • 2016年05月24日 10:12
  • 21017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Maven
举报原因:
原因补充:

(最多只允许输入30个字)