2010-08-20 195 views
14

我想知道人們使用或不使用Maven的原因。我們即將把我們所有的構建切換到Maven 2,並且不需要太多的經驗。使用Maven有什麼優點/缺點?

什麼是使用Maven 2,這樣的東西的優點/缺點:

  • 你爲什麼要切換到Maven?
  • 你爲什麼把maven扔掉,並用 別的東西?
  • 是什麼問題 爲您解決?
  • 是什麼問題 對您有何影響?

謝謝!

回答

10

我在過去4年左右遇到的每個項目中都使用過maven,從私人小型項目到大型企業幾十個模塊項目,我從未後悔過使用maven。

我從標準的java JAR/WAR/EAR項目到Flex/AIR應用程序和Linux RPM使用maven構建任何東西,當沒有maven插件可用於給定情況時,委託給AntrunGMaven

標準maven生命週期的強大功能和舒適性,結合大量可用的代碼生成插件,文檔,代碼度量等等,這些通常都很容易使用,這使得maven成爲java構建系統的唯一真正選擇。

繼續前進吧,但是直到你發明更好的東西,我會繼續使用它。

+0

我完全同意。使用polyglot maven,您甚至不需要再使用xml,這在我看來是maven的一個缺點。對於複雜的項目,POM很快變得非常大。另一方面,如果您使用的是像m2eclipse提供的編輯器那樣的pom編輯器,那麼無論如何您都不必直接處理大多數情況。儘管如此,polyglot maven規則:) – 2010-08-20 19:26:12

1

我開始與maven,我留下來。當我使用maven構建項目時,我從來沒有遇到缺失庫,錯誤的庫版本等問題,它編譯運行。

庫升級很簡單(不像Ant)。

Maven提供了許多有用的插件。我使用maven在hudson上運行功能測試 - 它下載我的項目的最新版本,啓動嵌入式數據庫,注入dbunit數據集,在jetty上部署應用程序,運行測試,呈現測試結果。

我不喜歡的一件事是在一個文件中包含所有內容。然後我想指定配置不僅使用XML。

4

使用Maven的巨大優勢是其存儲庫基礎結構。這促進了共享第三方庫的標準協議,並使團隊能夠更有效地進行協作,而不必強制將所有內容都檢入到相同的源代碼庫(模塊化版本)中。

倉庫管理人員都是免費的,我建議你安裝下列之一:

  • 的Nexus
  • Artifactory的
  • Archiva

的好消息是,你不被迫使用Maven構建代碼,以便獲得擁有Maven基礎架構的好處。

我推薦Maven用於「綠色領域」項目,無需傳統捍衛。項目的開始通常是引入新技術的最佳時間,使用Maven的好處已有詳細記錄。高燈是一個標準化的構建過程和豐富的第三方插件。

ANT項目可以重新設計爲與使用Maven的團隊互操作。正確應用的ivy插件實際上可以簡化ANT構建過程。 Ivy能夠通過從Maven存儲庫下載依賴關係並隨後發佈構建工件來管理項目的類路徑(就像Maven的「部署」一樣)。

最後ivy已被嵌入到其他構建工具中。示例是新建工具,如Gradle,simple-build-tool和開發系統,如Grails。因此,請使用Enterprise Maven存儲庫並選擇適用於項目團隊的構建工具。

0

我同意馬克對綠地項目的好處。在您的開發環境中啓動並運行它需要一些開銷,但它非常值得。

我可能會補充說,使用Maven的潛在危險是,如果您正在處理大型項目,則可能難以在存儲庫中維護JAR。您可能最終會在您的POM.xml中使用幾個不同版本的jar。

與任何項目一樣,確保您有適當的政策和程序來將不同的Jars引入您的代碼庫。這些罐子可以有不同的許可證,可能會將您的代碼庫暴露給開源世界。確保您的許可證已經過審覈。

+0

Maven解決了一個特定的問題,那就是在沒有任何依賴管理的情況下有效執行依賴關係管理,或者與Ivy有一個相似之處。就個人而言,對於大型多項目工作計劃,遲早你必須看看有效的POM_,這就是我發現Maven變得難以管理或難以管理的地方......除非你從一開始就受到紀律處分。這就是爲什麼從_that_角度來看,Gradle對用戶更友好,不會因爲後者的核心優勢而取消Maven,而且在複雜性方面更易於管理。它雖然取決於你。 – Beezer 2016-03-03 15:51:44

6

Maven太棒了!

我沒有太多的時間來抒發我想,但這裏是我的前的Maven的一些好處,沒有特定的順序:

  • 重複構建:如果你可以建立項目,你的同事將永遠能夠在他們的機器上。它也可以在構建服務器上重複使用。
  • 構建系統的標準化:新的開發人員不知道Maven會立即知道如何構建,發佈,測試等,消除大量的學習開銷。
  • 專注於自動化:Maven讓您置身於軟件開發過程自動化流程的思維中。
  • 約定優於配置:不需要安裝程序或構建工件所需的最低配置。
  • 依賴管理:Maven將爲您解決和管理您的依賴關係。
  • 測試:作爲項目生命週期的一部分運行測試和集成測試的能力。
  • 插件:有數千個插件可以執行各種任務。只需在POM中添加一個參考即可輕鬆完成配置。

就缺點而言,通常認爲您最好接受Maven的默認值和約定,並且最好在新建項目開始時使用它。如果您想節省在您的POM中配置XML的時間,我會同意這一點。

我並不是一個真正的工具狂熱者,但是在Maven之前使用過Make和Ant,我真的無法看到採用Maven的一個缺點。這是一款高質量的工具和實時節電器。

4

到目前爲止,我不喜歡它。 當我使用maven時,項目的構建時間急劇增加。從日食到幾秒鐘,甚至到最簡單的Maven項目,花費超過30秒。

鑑於如此多的人喜歡它,我一定在做錯了什麼,但到目前爲止我似乎無法弄清楚爲什麼要花時間來構建一個基於maven的項目。

相關問題