2008-10-11 36 views

回答

22

Maven

它比螞蟻要好得多,因爲對於大多數常見的任務,你不必編寫複雜的build.xml,Maven有非常好的默認值,這一切都約定優於配置。

它也有一個大型的圖書館中央資料庫,它很容易配置它,就像「使用最新的穩定的公共資源 - 不管」。然後,Maven將爲您下載最新的穩定版本(不再需要在VCS中檢查jar),如果發佈了新的上游穩定版本,它也會下載它。當然,如果你需要的話,將它鎖定到某個特定的版本也很容易。

它也很好地與Netbeans和Eclipse(m2eclipse插件)集成在一起,因此IDE會尊重您在pom.xml文件中聲明的任何設置(包括依賴關係)。

maven還有一些缺點:一些插件的文檔記錄很差,與IDE的集成並不完美,並且以不同的方式,某些錯誤消息可能難以理解。

+0

您是否認爲maven更像是一個項目定義,從而創建了build和ant,讓它處於低級別讓您自己去做?有點像,但不太極端,C對彙編語言? – dacracot 2008-10-11 22:33:38

+0

可以這樣想,是的。但對我來說重要的是,Maven和IDE插件使得構建工具變得更好,就是這樣。 – 2008-10-12 22:01:13

+2

如果您使用Maven,請考慮像Nexus存儲庫。這樣,您使用的所有罐子都被複制到內部網絡上的一個快速位置。 並將商業版本鎖定到某個版本,以便您可以重現您的可交付物:) – extraneon 2008-10-14 18:24:00

4

有些人喜歡Ivy,這是一個依賴管理Ant的東西,所以我想來自Ant背景的人會喜歡它。其他類似Buildr。這是一個JRuby的東西,所以如果你可以在同一個項目中使用Ruby和Java,那麼我認爲它會很有趣。我個人使用Maven。很容易掀起一個默認的pom.xml文件並擁有所有的構建命令。當項目增長時,您已經擁有了用於運行插件和添加依賴項的基礎架構。

0

我建議您在考慮合適的工具時從您的要求開始。每個項目都不同,你使用的工具應該反映問題空間而不是時尚。

這就是說,我認爲對於一般用途來說,ant仍然可能是構建java應用程序的最佳通用工具。它經常用於其他依賴管理工具的有效使用,但我們又一次避開了一個沒有問題的解決方案。

非常好的消息是,如果你的過程是很好的切換構建工具是一個相當無痛的過程 - 教訓 - 從一個好的過程開始,擴展到手頭的問題。

1

我真的很喜歡SCons,這是一個構建工具,其配置文件都只是Python腳本。這將吸引任何知道Python或類似腳本語言的人。 SCons旨在與Java以及C/C++和其他語言良好協作,過去我對此非常滿意。

因爲SCons文件是用Python編寫的,所以如果你發現自己需要做任何特殊的事情,你可以編寫任意的Python代碼。但是,如果你對Python完全不熟悉,那麼可能會有更高的學習曲線,而不是試圖擴展Ant或類似的東西來做你想做的事情。

1

Maven2似乎是未來的事情。

對於我們的項目,只要可行,我們都會回到螞蟻身邊。

Maven2需要相當多的知識才能完全按照你想要的方式得到它,而Maven2版本似乎以不同方式處理類路徑。

而且這是一個痛苦的檢查列入依賴關係的依賴關係的所有許可證可以在拿得出。

並可能有較慢的啓動時間,因爲你需要自己找出的依賴,但至少它很容易閱讀。沒有魔法在這裏:)

如果你確實使用maven,請考慮像Nexus這樣的內部存儲庫。這樣,如果一些圖書館決定退出網絡,你的軟件並沒有死亡。

*我們燒了maven1;在ibiblio上maven1庫重定向和maven1不支持重定向:(

11

螞蟻仍然是一個主要的球員。在我的經​​驗,這是主要的。此外,常春藤,它處理了Maven的一些優勢,IMO,Ant將成爲其他工具的框架:XML過於僵硬(見下面的鏈接)

Maven 2也是一個主要玩家,我知道那些非常喜歡它,批評對於Maven 1來說是真實的(它有很長的路要走)

Groovy提供了一些很酷的s在構建空間中凝結,因爲它們建立在Ant上。 Gant在Grails中使用,但可以歸入Gradle。這些也可以用於Java。

冒着對我自己的博客寫作的風險,here is a post關於Gant和Gradle。這裏是關於他們的未來的very current debate的鏈接。

5

在企業中,螞蟻依然是固定隊員。依賴關係不會快速改變。與持續轉向相對最新版本的依賴瓶子的開源項目不同,MOST企業不會過快地改變依賴關係。鑑於此,maven的優勢與螞蟻相比並不算太多。

然後再次,如果你想要一些maven的功能,螞蟻的人有常青藤(http://ant.apache.org/ivy/)的依賴關係功能。

如果您想繼續使用ant,請掌握第二版「ANT IN ACTION」,以便您可以使用ant達到最佳生產效率。

祝你好運,

4

您還有Gant。 Gant是Groovy + Ant,你可以用普通的groovy編寫你的任務,你也可以調用任何ant任務。如果你是一個Java商店,並且想重複使用你不熟悉的XML技術,我推薦Gant,它很容易設置,並且可以嵌入到ant中(也可以從ant中調用gant)。

相關問題