2013-02-19 42 views
29

我最近開始使用Gradle作爲構建系統。 他們首先比較的是搖籃與Ant和Maven這樣的人做的是, Ant是一個勢在必行構建系統,而Maven是一個聲明構建系統。 雖然Gradle是一個聲明式構建系統沒有Maven強制執行。命令式與聲明式構建系統

我想了解這些條款聲明勢在必行當談到談論構建系統更好。

回答

41

簡而言之,一個螞蟻腳本告訴螞蟻工具要做什麼 - 「編譯這些文件,然後將它們複製到該文件夾​​,然後獲取該文件夾的內容並創建一個存檔。

雖然行家pom聲明我們所希望擁有的結果 - 「這裏是項目取決於庫的名稱,我們想生成一個Web歸檔」。 Maven知道如何獲取這些庫以及自己在哪裏找到源類。

雖然螞蟻給你更多的靈活性,它也迫使你不斷重新發明輪子。

另一方面,Maven需要較少的配置,但可能會感覺過於束縛,特別是如果您習慣於不同的工作流程。

編輯:螞蟻行家比較的一個重要方面是行家有約定,描述將文件應該在於,其中的依賴性被發現,放在哪裏得到的神器,而螞蟻不。

所以你可以想像使用maven就像坐公共汽車一樣 - 你選擇停車的地方和你離開的地方。使用螞蟻就像開車 - 你必須自己動手。你不必告訴公交車司機該做什麼,但是車站可能離你想去的地方太遠。

編輯2:'重塑車輪'的隱喻似乎不如我所希望的那麼清晰。這就是我的意思:

沒有合理的默認值/約定,您必須明確地爲每個項目定義項目結構和構建生命週期,通常會使其成爲品味和意見的問題。由於團隊和公司之間的偏好有所不同,所以構建流程也是如此這需要爲新項目成員和後來的維護人員提供更多的認知工作。根據開發人員的經驗和專業知識,最終的解決方案可能很難擴展和使用。

正如我在下面的評論中所說的那樣,儘管ant build的最佳實踐存在,但它們仍然必須針對每個項目實施,或者從項目複製粘貼到項目,而不是成爲開箱即用的構建工具本身的默認值。

對於我的口味,Maven在折衷的另一面太過分了。更改默認值並不像應該那樣容易。

+0

雖然我沒有在Ant上工作,但類似的東西應該已經解決了嗎?像Ant中的一些插件一樣,跨越更多項目的是同樣的事情? – 2013-02-19 11:02:48

+1

@AnkitDhingra恐怕螞蟻的流行做法是複製 - 粘貼最後一次工作的設置:)當然有最佳實踐,但您仍然必須實施它們。請參閱編輯 – kostja 2013-02-19 11:13:05

+0

@AnkitDhingra以及它不是重新發明輪子,你是對的,而是重建它。 – kostja 2013-02-19 11:15:41