我投了築巢。我使用的IDEA 9顯示了項目窗格中的嵌套,因此演示文稿反映了您的邏輯項目結構。 (這不是8.1的情況 - 它已經變平了。)
我更喜歡保持東西嵌套,特別是如果名稱非常相似 - 使用命令提示符時導航更容易。我有一個像myapp-layer-component這樣的名稱的項目,所以它們都以相同的前綴開頭,而且很多都具有相同的層,因此在命令行中使用自動完成是無用的。將這些分離爲嵌套結構會更容易,因爲名稱(應用程序名,層或組件)的每個部分在目錄結構中的每個級別只重複一次。
如果從命令行構建,構建項目的子集比如構建項目更容易,如果我正在研究數據庫模型,那麼我經常需要構建該領域的所有項目。當文件變平時,這是非常棘手的 - 我知道的唯一方法是使用maven的-pl
參數並指定要構建的項目。使用嵌套目錄,我只需cd
到db
目錄並運行mvn
。
例如,而不是
myapp-web-gui1
myapp-web-gui2
myapp-web-base
myapp-svc-clustered
myapp-svc-clustered-integrationtest
myapp-svc-simple
myapp-db-model
myapp-db-hibernate
我們有結構
\myapp
\web
\gui1
pom.xml
\gui2
pom.xml (other poms omitted to keep it short)
\base
\svc
\clustered
\clustered-it
\simple
\db
\model
\hibernate
你也可以添加嵌套集成測試,但是這似乎是驅動點太遠。
築巢,您還可以繼承的所有優點(和它的一些痛苦......)
我已經受夠了這個唯一的問題是,目錄名稱不匹配的神器ID 。 (我還在使用完整的artifactIds。)所以每個項目都必須顯式定義SCM路徑,因爲這些路徑不能再從父pom中推斷出來。當然,每個目錄都可以與artifactId相同,然後可以從父項中推斷出SCM的詳細信息,但是我發現長目錄名稱有點笨拙。
其他答案真的很好,謝謝。 – 2010-05-22 14:26:59