Infoq专访:Maven中文用户组创始人许晓斌
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中文用户组创始人许晓斌的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: com.weibo.sdk.androi
- 下一篇: 创建MovieClip类