Maven 是 Java世界中一款历久弥新的构建工具,很多耳熟能详的开源项目都是基于Maven来构建的。Maven 3刚推出不久,InfoQ采访到国内唯一的Sonotype(Maven背后的公司)员工许晓斌先生,请他谈谈关于Maven 3以及他即将出版的新书《Maven实战》。

1. 首先,请您介绍你自己,从什么时候开始你从事Maven的推广工作,以及你现在在做些什么有趣的事情呢?

我从07年开始接触Maven,慢慢学习并在实际项目中推广使用,然后慢慢喜欢上了这个技术。1年之后我开始编写Maven中文博客 并翻译《Maven 权威指南》 ,并且维护了一个Google Group ,我想这些事情对于Maven在国内的推广起到了一定的作用。也正是由于这些工作的关系,我有机会熟悉Maven的方方面面,并加入了Sonatype——Maven之父Jason Van Zyl创建的公司。

目前我主要做两方面的工作,其一是维护Maven中央库 和Sonatype OSS仓库托管服务 ,该服务为开源项目提供免费的Maven仓库并帮助他们同步自己的构件至中央仓库。目前有超过600个项目在使用该服务,包括知名的JUnit、TestNG、Ehcache等等。除此之外我也参与Nexus 的开发,开源的、商业的都有。

2. Maven 3 刚刚推出不久,据说这个新版本在性能上有很大的提高。相比较以前的版本,你觉得最大的变化、最重要的新特性是哪些呢?

Maven 3 发布的第一时间我就写了篇博客进行介绍 , 其实从性能上来说,抛开并行构建不谈,用户不会感受到很明显的提高,这是因为Maven本质上是将构建工作给其他工具来做的,例如编译用javac,测试 用JUnit,因此给Maven的改进余地不多。使用Guice代替Plexus从一定程度上能改进性能,但不是很明显。我个人认为Maven 3最重要的改进是清理,包括代码清理和不良特性的清理,例如在Maven 3中,你使用插件不声明版本不会引入快照,而Maven 2就因为快照插件的问题被很多人诟病。此外,Maven 3的并行构建特性也让人眼前一亮,只要模块组织合理,多个模块能够得以同时构建,充分利用多核资源。

3. 在今年2月份,InfoQ 有篇新闻 是关于Maven 3即将采用Guice来作为新的DI层,请问这在Maven 3里面实现的如何?这对那些采用Maven的开发者来说,有着什么样的好处呢?

采用Guice作为DI容器最大好处在于标准化,Maven之前使用的Plexus历史也很久,但发展得很差,文档也很缺乏,转到Guice后,由于大家更熟悉,就可以吸引更多的贡献者。Maven团队也不再需要花时间去维护,有了问题,可以得到Guice社区的帮助。

Maven 3 在采用Guice的同时还必须支持Plexus风格DI标注或XML配置,以兼容现有的数以百计的Maven插件。为此Maven团队基于Guice 2.0 所支持的自定义注入器,开发了一个中间层模块,该模块包含一个匹配器来识别你的标注配置是Plexus风格还是Guice支持的JSR300风格,如果是Plexus风格则再应用额外的集成逻辑。实现的细节在这两篇博客中有介绍:The Guice/Plexus Bridge and Custom Bean Injection ,Create a Guice Bean Extension Layer 。

4. 在InfoQ的这篇关于Maven 3 的 新闻 里,出现了很多开发者对于Maven的评价,可谓毁誉参半。作为Maven的推广者,你怎么来评价这样争论的存在呢?

关于Maven的争论从来没有休止过,类似的争论还可以找到很多。但有目共睹的是,越来越多的开源项目在使用Maven作为他们的构建工具。我想那些人反对Maven主要是以下三个因素:

  • Maven 提倡约定优于配置,例如目录结构的约定,很多习惯高度自定义的用户受不了,于是当然就排斥。其实约定有很多好处,例如当你从一个项目转到另外一个项目的时候,你不需要学习另外一套结构。
  • Maven 的学习曲线陡峭,一些人花了时间去学习,但没体验到快乐就学不下去了,因此完善的文档很重要。
  • 与IDE的集成,这方面m2eclipse的质量确实比不过其他集成如Ant,问题也有一些,但这些都在改善。IDEA对Maven的集成就相当不错。

争论还会继续,只要反对者能提出合理的需求,那就是Maven改进的空间。

5. 谈一谈你编写的即将出版的那本新书吧,名字叫《 Maven 实战 》?为什么我需要这样一本新的Maven书呢?

由 于种种原因,我翻译的《Maven权威指南》没有能够在国内出版,这是一个遗憾,很多人告诉我他们自己打印了那本书看,这让我很感动。我很希望国内能有一 本印刷上市的关于Maven的书,这是我写《Maven实战》的最原始动机,后来我发现借助这个机会,我能将书写得更接近国人,包括语言的组织,以及内容 的安排。例如在《Maven实战》一书中,我介绍了使用Maven进行自动化部署,以及结合Hudson进行持续集成等内容,这些内容都是我实际体会到大 家迫切需要的。前面说过,Maven的学习曲线比较陡峭,这是他的天生问题,弥补的办法就是提供完善的文档,对于初学者来说,这样一本书无疑能帮他们少走 弯路,节省时间。

6. 请您给那些不甚熟悉Maven的开发者们一点建议,怎样才能又快又好的掌握Maven呢?

首 先不要排斥它,很多人因为Maven有很多约定而受不了,其实Maven这样做能帮助你更规范的管理项目。其次,如果不要太依赖于IDE,IDE 能做很多事,但在自动化构建以及持续集成这些方面他不擅长,试着多用用命令行,熟悉Maven命令的同时,也能更深刻地体会一些Maven的概念。还有要 耐下心来读读文档,你买我的书看当然最好,想省点可以看《Maven权威指南》。最后就是实践啦,可以看看开源项目怎么用Maven的,然后在实际的项目 中尝试,并使用Nexus建立自己的Maven私服。

你 是否早已厌倦了日复一日的手工构建工作?你是否对各个项目风格迥异的构建系统感到恐惧?Maven——这一Java社区事实标准的项目管理工具, 能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性。已经有无数的开源项目使用它 来构建项目,促进团队交流。每天都由数以万计的开发者在访问中央仓库以获取他们需要的依赖。 由国内的Maven权威亲自执笔,《Maven实战》告诉你Maven的本质是什么,深入阐述Maven的依赖管理、仓库、生命周期、插件等核心概 念。你还能看到实际的案例演变,以及诸如多模块组织、建立Nexus私服、使用Hudson进行持续集成等企业开发的最佳实践。

本书配套资源:http://www.juvenxu.com/mvn-in-action/

Chinapub预订:http://www.china-pub.com/197177

Javaeye连载:http://www.iteye.com/wiki/hzbook/2872-Maven-in-action

Infoq迷你书:http://www.infoq.com/cn/minibooks/maven-in-action

Infoq专访:Maven中文用户组创始人许晓斌相关推荐

  1. pom文件依赖范围(来自Maven实战(书籍)-许晓斌)

    compile:编译依赖范围.如果没有指定,就会默认使用该依赖范围.使用此依赖范围的Maven依赖,对于编译.测试.运行三种classpath都有效.典型的例子是spring-core,在编译.测试和 ...

  2. 中国汽车CIO峰会专访F-One创始人曾晓丹(访谈实录)

    ​ 2017年10月26日,由勤哲传媒组织发起的"中国汽车CIO 峰会" (简称ACS 2017),在上海闵行星河湾酒店圆满落幕.围绕"互联网+ 时代的汽车全产业链信息化 ...

  3. Stratifyd创始人汪晓宇:打造AI数据分析生态 | 亿欧专访

    人工智能发展至今已历经三次浪潮,身处第三次浪潮的今天,人们已经感知到AI对于生活方方面面的影响. 智能家居.智能机器人.指纹识别.人脸识别等等,都是AI在日常生活中的应用体现.人工智能正以不可逆转的迅 ...

  4. 【许晓笛】EOS 超级节点的五个使命

    在EOS系统中,有"两股势力"是整个系统最关键的因素,那就是项目方和见证人.很多人觉得EOS这个项目"奇葩",就奇葩在项目方和见证人的关系上.EOS的项目方是B ...

  5. 【许晓笛】 EOS智能合约案例解析(1)

    详解 EOS 智能合约的 hpp 文件 为了帮助大家熟悉 EOS 智能合约,EOS 官方提供了一个代币(资产)智能合约 Demo -- eosio.token.eosio.token 智能合约目前还不 ...

  6. 中文谐音怎么读_AOS中文社区创始人大豪:零隐链是AOS最恰当的中文表达

    AOS在进入中文市场很长一段时间里,都只是叫AOS,刚开始的时候,用户在中文搜索引擎检索AOS,搜到的信息与AOS公链几乎没有联系.市场很疑惑,BTC叫比特币.ETH叫以太坊.EOS叫柚子,而AOS在 ...

  7. 【许晓笛】 EOS 智能合约案例解析(2)

    详解 EOS 智能合约的 cpp 文件 之前的文章介绍了 eosio.token 智能合约的 hpp 文件,这次向大家介绍 eosio.token.cpp 文件,cpp 文件即 C++ 代码文件,智能 ...

  8. 项目集管理PgMP:聚焦战略、收益与治理︱项目管理者联盟联合创始人宣晓锋

    项目管理者联盟联合创始人宣晓锋受邀为由PMO评论主办的2022第十一届PMO大会(线上会议)演讲嘉宾,演讲议题为:项目集管理PgMP:聚焦战略.收益与治理.大会将于8月13-14日和8月20-21日通 ...

  9. 2021-10-28项目集管理PgMP:刷新项目管理思维与架构︱项目管理者联盟联合创始人宣晓锋

    项目管理者联盟联合创始人宣晓锋先生受邀为"2021第二届中国项目经理线上会议"演讲嘉宾,演讲议题为"项目集管理PgMP:刷新项目管理思维与架构".会议将于11月 ...

  10. 【许晓笛】别傻了,瀑布到来时,一句口号根本守不住你的币

    我一直坚持的一个观点是,在投资区块链资产之前,一定要对区块链底层技术有所了解,对技术原理有所认同,才能放心地投入真金白银.如果只是人云亦云,天天跟着"大神"喊者什么"十倍 ...

最新文章

  1. 微信小程序外卖增长402%,茶饮下单最活跃
  2. OpenCV之objdetect 模块. 物体检测:级联分类器
  3. django 如何写model
  4. ubuntu 分区_系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
  5. IIS------配置.Net 4.0
  6. 模态框 modal.js
  7. Unreal Engine 4/虚幻 4 Demo下载地址
  8. JAVA TCP编程和UDP编程
  9. python股票量化交易入门到实践_Python股票量化交易从入门到实践
  10. 【数据结构】哈希(Hash)
  11. 火狐Error 403 No valid crumb was included in the request并且浏览器一直是loading中
  12. 使用PHP获取网站Favicon的方法
  13. R语言-回归系数的极大似然估计
  14. python: nums 和 nums[:] 的区别
  15. ora-00600 [25027]
  16. 汉语写代码编程与为什么很多软件有简体中文版
  17. python笔记11面向对象
  18. 关于手机号码、邮箱的在JavaScript中的正则表达式和其简单用法
  19. 学霸都在用的学习神器,绝对能让你提升学习效率
  20. iPhone比小米贵3000 贵在哪里?

热门文章

  1. Kali渗透测试:Metasploit 6.0 中的Evasion模块
  2. TML5期末大作业:咖啡网站设计——咖啡网站pc端带轮播js (5页) 学生酒水网页作业, 生鲜水果网页作业成品, 零食小吃网页作 美食网页业模板
  3. 《中国近代史纲要》考试过关?Python帮你划重点
  4. 360云盘服务器停止怎么找回,360云盘宣布关闭,老司机们的“珍藏”何去何从?...
  5. java 日期 面试题_Java面试试题日期和时间
  6. 【废了-准备删除01】渗透测试靶机搭建——基于WAMP的drupal7.x管理系统
  7. 实战项目 — 爬取中国票房网年度电影信息并保存在csv
  8. 用阿里网盘有一段时间了,说说总体感受吧
  9. Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有
  10. PHP 3D大富翁,大富翁3D版 Monopoly Classic HD