2010-07-06 99 views
3

Joel Test的第2項是「您能否一步完成構建」,但實現此目標的最佳(或普遍接受的)方法是什麼?使用IDE的命令行界面執行headless build與使用完全獨立於IDE的構建腳本(例如在Java項目中使用Ant或Maven)相反,有什麼優點和缺點。命令行構建的最佳做法

我問這個問題是因爲我正在試驗Maven,並且有點驚訝地發現,即使在使用m2eclipse插件時,關閉Eclipse的Java Builder並將整個構建過程委託給Maven並不是真的可行該項目。看來,如果我想將項目遷移到Maven,我最終將不得不維護兩個等效但不同的構建過程,例如,命令行構建將使用DataNucleus Maven插件來增強JDO類,而IDE構建將使用Eclipse的DataNuclues插件;命令行版本將使用Tomcat Maven插件,而IDE將使用Eclipse的Web工具平臺。這種冗餘看起來不幸。

我收集到NetBeans使用Ant構建它,這聽起來像可以解決這個問題。但不幸的是,我既不使用NetBeans也不使用Ant!

編輯補充:我發現我可以設置一個Maven構建在Eclipse中調用一些我使用的Maven插件的具體目標(例如,在我的情況「的目標DataNucleus將:提高過程 - 資源「負責JDO增強,資源複製和native2ascii轉換)。這將java編譯爲Eclipse,但仍與Maven實現某種程度的集成。

+0

通過非常仔細地定義「步」... – 2010-07-06 09:46:19

回答

1

eclipse構建器爲您提供中間和重複的構建,但「Joel測試」實際上是能夠從源代碼到準備部署某個步驟。如果您使用的是Maven,有幾種方法可以解決這個問題 - 包括在Eclipse中調用Maven作爲命令行腳本。

mvn package 

是我最常用的快速運行整個構建設置。您可以通過POM擴展Maven,並根據需要注入一些其他機制。如果你稍微複雜一點,開始使用多模塊POM和Maven設置來獲得與其他代碼集成並運行的功能測試通常是最有效的。基本上,讓eclipse「做它的事」與它的建設者,並利用它提供的優勢,但是當你準備好使用最終產品時,它通過持續集成服務器從命令行調用它(哈德森是一個很容易獲得和建立的 - 免費的:http://hudson-ci.org/)。推測如果你正在使用Maven,你也會將一個Archiva或Nexus的實例設置爲你的DSL來生成結果庫。您可以讓哈德森調用「mvn deploy」進行常規檢入構建,或者「mvn發佈:準備& & mvn發佈:執行」,以便在您準備切割發佈時(哈德森獨立版本最適合此工作)

+0

好吧,基本上這是兩個不同的過程。我懷疑我可能必須忍受這一點,但我想先聽取其他開發人員的意見。 (如果Eclipse剛剛開箱即可「做這件事」,那甚至不會是一個問題,但我必須手動配置諸如JDO增強,native2ascii轉換和WAR部署等很多事情的事實有效地複製POM中已經聲明瞭什麼,只是讓我思考)。 – 2010-07-06 06:04:11

+0

我有點聰明,發現我至少可以將一些工作委託給Maven(參見上面的編輯)。 – 2010-07-06 08:43:08

0

您可以在IDE中執行無頭構建。在eclipse中,你可以執行一個任意的shell命令作爲「外部工具」。在IDEA和netbeans中也是如此,只需付出一點努力。至少,這是一個無頭構建的方便測試,您應該在更改構建配置時運行它。

此外,我想補充說,構建應該是最低要求的一步。它也應該很容易設置並且易於調試。如果建立新的開發人員環境需要花費幾個小時的時間,那麼一步式過程可能不是最佳的。這是與警告,如果你每季度或每年增加或更換團隊成員,這不是一個問題。

+0

我認爲這裏OP的意思是運行* Eclipse Build headless(從命令行),而不是其他方式。而且因爲他可以這麼做,爲什麼需要使用平行維護等構建Maven?(短版本)? – 2010-07-06 14:23:10