Maven实战 1.4被误解的Maven

1.4被误解的Maven

C++之父Bjarne Stroustrup说过一句话:“只有两类计算机语言,一类语言天天被人骂,还有一类没人用。”当然这话也不全对,大红大紫的Ruby不仅有人用,而且骂的人也少。用户最多的Java得到的骂声就不绝于耳了。Maven的用户也不少,它的邮件列表目前在Apache项目中排名第4(http://www.nabble.com/Apachef
90.html)。

让我们看看Maven受到了哪些质疑,笔者将对这些质疑逐一解释。

“Maven对于IDE(如Eclipse和IDEA)的支持较差,bug多,而且不稳定。”

相对于JUnit和Ant来说,Maven比较年轻,IDE集成等衍生产品还不够全面和成熟。但是,我们一定要知道,使用Maven最高效的方式永远是命令行,IDE在自动化构建方面有天生的缺陷。此外,Eclipse的Maven插件——m2eclipse是一个比较优秀和成熟的工具,NetBeans也在积极地为更好地集成Maven而努力,自IntelliJ IDEA开源后,也有望看到其对Maven更好的集成。

“Maven采用了一个糟糕的插件系统来执行构建,新的、破损的插件会让你的构建莫名其妙地失败。”

自Maven 2.0.9开始,所有核心的插件都设定了稳定版本,这意味着日常使用Maven时几乎不会受到不稳定插件的影响。此外,Maven社区也提倡为你使用的任何插件设定稳定的版本。如果我们有好的实践不采纳,遇到了问题就抱怨,未免不够公允。从Maven 3开始,如果你使用插件时未设定版本,会看到警告信息。

“Maven过于复杂,它就是构建系统的EJB 2。”

不要指望Maven十分简单,这几乎是不可能的。Maven是用来管理项目的,清理、编译、测试、打包、发布,以及一些自定义的过程本身就是一件复杂的事情。目前在Java社区还有比Maven更强大、更简单的构建工具吗?答案是否定的。我们可以尝试去帮助Maven让它变得更简单,而不是抛弃它,然后自己实现一套更加复杂的构建系统。

“Maven的仓库十分混乱,当无法从仓库中得到需要的类库时,我需要手工下载复制到本地仓库中。”

Maven的中央仓库确实不完美,你也许会发现某个jar包出现在两个不同的路径下。这不是Maven的错,这是开源项目本身改变了自身的坐标。如果没有中央仓库,你将不得不去开源项目首页寻找下载链接,这不是更费事吗?现在有很多的Maven仓库搜索服务。无法从中央仓库找到你需要的类库?由于许可证等因素,这是完全有可能的,这时你需要做的是建立一个组织内部的仓库服务器,你会发现这会给你带来许多意想不到的好处。

“缺乏文档是理解和使用Maven的一个主要障碍!”

这是事实。Maven官方站点的文档十分凌乱,各种插件的文档更是需要费力寻找。Sonatype编写的《Maven权威指南》很好地改善了这一状况,但由于该书的某些部分与国内的现状有些脱离,且翻译速度无法跟上原版的更新速度,于是笔者编写本书,目的也是帮助大家理解和使用Maven。

时间: 2024-10-02 23:41:21

Maven实战 1.4被误解的Maven的相关文章

[Maven实战](4)eclipse创建Maven项目

介绍前面Hello World项目的时候,并没有涉及IDE,这样一个简单的项目,使用最简单的编辑器也能完成.但是对一个稍微大一些的项目来说,还是推荐使用IDE.这一篇文章我们在m2eclipse帮助下使用eclipse创建Maven项目. 1. 创建 使用IDE创建一个Maven项目非常简单,选择菜单项File->New->Other,在弹出的对话框中选择Maven下的Maven Project,然后点击Next按钮. 图1 在弹出的New Maven Project对话框中,使用默认的选项.

Maven实战

Maven 实战 许晓斌  著 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑. 本书是国内第一本公开出版的Maven专著.它内容新颖,基于最新发布的Maven 30,不仅详尽讲解了Maven 30的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2x版本进行了对比,以便于正在使用Maven 2x版本的用户能更好地理解.本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装.配置和基本使用方法,以便于初学者参考:详细

Maven实战. 导读

Maven 实战 许晓斌  著 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑. 本书是国内第一本公开出版的Maven专著.它内容新颖,基于最新发布的Maven 30,不仅详尽讲解了Maven 30的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2x版本进行了对比,以便于正在使用Maven 2x版本的用户能更好地理解.本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装.配置和基本使用方法,以便于初学者参考:详细

[Maven实战](5)Archetype生成项目骨架

Hello World项目中有一些Maven的约定:在项目根目录中放置pom.xml,在src/main/java目录下放置项目的主代码,在sc/test/java中放置项目的测试代码.之所以一步一步的展示这些步骤,就是为了让我们这些菜鸟得到最真实的感受.我们称这些基本的目录结构和pom.xml文件内容为项目的骨架. 如下就是我们项目的目录结构骨架: 但是我们不希望每次创建项目时,都是手动一个一个的创建我们的目录结构,重复这些没有什么意义的事情.为此Maven提供了Archetype来帮助我们快

[Maven实战](2)Eclipse插件m2eclipse

1. 简介 Eclipse是一款非常优秀的IDE.除了基本的语法标亮,代码补齐,XML编辑等基本功能之外,最新版的Eclipse还能很好的支持重构,并且集成了JUnit,CVS等各种流行工具.可惜Eclipse默认没有集成Maven的支持.Sonatype公司建立了m2eclipse项目,这是一款十分强大的Maven插件. 2. m2eclipse安装 启动eclipse之后,在菜单栏中选择Help,然后选择Install New Software,接着就会有一个Install对话框.单击wor

《maven实战》学习笔记7——maven项目版本管理和灵活构建

说明 <maven实战>一书内容很多,整个maven要学的东西也很多,不过,结合个人实际情况,我打算把这一篇作为这次对maven学习的一个阶段性收尾,待其他更急需补充的知识有一定眉目了,再回过头来继续深入. maven版本管理 对于maven版本管理,最重要的是需要区分出快照版本SNAPSHOT和发布版本release,据目前的了解,快照版本格式是固定的,而发布版本有几种,例如带release单词的和不带release单词的. 快照版本由于每次发布都带时间戳,所以适用于开发阶段团队协作,但同时

《maven实战》学习笔记1——maven是什么?为什么要用maven?

前言 工欲善其事,必先利其器.对于java web开发者而言,或者说对于目前大部分java web开发者而言,eclipse.maven.svn.tomcat可能就是目前最常用也是必会的武器了,所以为了更高效的开发和解决问题,经过一番思考后我决定系统性的学学这几样武器. 这几样在我看来一样的重要,也就没有先后之分.都要学,于是我便随便抽了一个,就先从maven开始,主要是结合<maven实战>一书的电子版和纸质版来学习和实践. 为了更好的记忆,同时也为了能在学习的过程中帮到更多人,遂决定做这个

Maven实战1.1何为Maven

Maven实战第1章Maven简介1.1何为Maven Maven这个词可以翻译为"知识的积累",也可以翻译为"专家"或"内行".本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理.无论是小型的开源类库项目,还是大型的企业级应用:无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手. 1.1.1何为构建 不管你是否意识到

《maven实战》学习笔记3——maven使用入门

说明 由于我目前所做的项目皆是java web项目,因此整个系统学习的过程也就以java web为基础. maven项目结构 根据maven约定,一个比较标准的maven java web项目,结合eclipse通常可以看到结构如下: src/main/java java主要代码存放目录 src/main/resources java配置文件存放目录 src/test/java java测试代码存放目录 JRE System Library jre中的一些jar包映射 Maven Depende