写点什么

采访:Maven 贡献者、《Maven 实战》作者许晓斌

2010 年 11 月 05 日

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 主要是以下三个个因素:

  1. Maven 提倡约定优于配置,例如目录结构的约定,很多习惯高度自定义的用户受不了,于是当然就排斥。其实约定有很多好处,例如当你从一个项目转到另外一个项目的时候,你不需要学习另外一套结构。
  2. Maven 的学习曲线陡峭,一些人花了时间去学习,但没体验到快乐就学不下去了,因此完善的文档很重要。
  3. 与 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 私服。

2010 年 11 月 05 日 04:536060
用户头像

发布了 127 篇内容, 共 37.4 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

RRedis系列(八):缓存到底该如何做到高可用?

z小赵

redis 分布式系统 高并发系统设计

架构师训练营第九周作业

张明森

刘华:事实证明,假敏捷都比瀑布优秀

刘华Kenneth

DevOps 敏捷 软件开发

无意中参加了infoQ的一期活动,获得了所有奖项,哈哈哈。。。

诸葛小猿

InfoQ 奖品

今天你内卷了吗?

池建强

个人成长 内卷化

敏捷教练和Scrum Master - 敏捷转型中的两个重要角色的对比

Bob Jiang

Scrum 敏捷教练 ScrumMaster

Scrum Master是否需要懂技术

Bob Jiang

敏捷 敏捷开发 敏捷教练 ScrumMaster

第九章作业

武鹏

小伙伴想写个 IDEA 插件么?这些 API 了解一下!

程序员小航

IDEA idea插件 教程 API IntelliJ IDEA

JVM详解之:类的加载链接和初始化

程序那些事

Java JVM GC 加载

稳定匹配:幸福不靠等,脱单要主动

KAMI

生活 算法 方法论

极客时间 - 架构师培训 - 9 期作业

Damon

来了来了!Docker安装及运行原理

程序员的时光

Java Docker 微服务

金融行业区块链技术应用有了“安全符”

CECBC区块链专委会

Docker 网络

北漂码农有话说

Docker

基于 opentracing + Jaeger 实现全链路追踪 ----理论部分

是老郭啊

golang 全链路监控 OpenTracing Jaeger

“PlusToken”跨国网络传销案告破,涉案400亿元!

CECBC区块链专委会

nginx配置文件

张明森

Dockerfile你值得拥有

北漂码农有话说

Docker

LeetCode题解:70. 爬楼梯,递归+哈希表,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

你该知道的Docker-compose

北漂码农有话说

这是我迄今为止读过的最有价值的技术书,却一行代码都没有

废材姑娘

什么是算法的大O表示法

码农神说

算法 时间复杂度 Java算法 大O

F5G+X:给5G一个伙伴,给千行百业一个拥抱

脑极体

Python 多进程之间共享变量

AlwaysBeta

Python 进程

LeetCode题解:70. 爬楼梯,DP遍历数组,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

微碳系:我心中的宇宙

Geek_116789

谈谈敏捷中的那些模式

Bob Jiang

敏捷 敏捷开发 敏捷教练

复杂事件处理简介

星际行者

分布式 流计算 CEP 复杂事件处理

架构师训练营第九周学习总结

张明森

搭乘政策红利“快车” 欧科云链助力区块链人才培养

CECBC区块链专委会

采访:Maven贡献者、《Maven实战》作者许晓斌-InfoQ