2012-06-25 112 views
3

我使用eclipse來開發需要「戰爭包裝」(使用maven-gae-plugin archetype)的maven上的應用程序引擎項目。Maven多模塊項目,爲什麼需要「pom包裝」?

如何在其中一個子項目中完成更改時,如何包含其他項目(例如,公共庫項目)以便更新所有內容?

一個解決方案可能是「多模塊項目」,但我不明白爲什麼maven需要父項目是pom包裝。另外,我擔心更改爲pom包裝可能會破壞appengine兼容性(執行dev-server,從eclipse插件等部署...)

回答

4

多模塊項目不僅是打包圖書館家屬項目的一種方式,實際上是一場戰爭或耳朵。它允許你分享屬性,插件,行爲...

這是一種將它們連接在一起的方式,無論最終結構如何。他們自己的生命週期是相關的。

所以,更好的方式做你想要的是

/ 
|your-parent-project 
+--pom.xml --> pom 
| 
+--/your-webapp-project 
| +--pom.xml --> war 
| 
+--/your-service-project 
| +--pom.xml --> jar 
| 
+--/your-dao-project 
| +--pom.xml --> jar 
| 
+--/your-common-resources-project 
| +--pom.xml --> zip 

您仍部署你的戰爭計劃,但父項目將包含約隊,CI,依賴管理信息。

你發佈你的父項目(與Maven釋放小插件就會標記和公會自動),因爲這個它擁有所有的人之間的整個生命週期和關係..

反應堆(Maven的訂貨引擎)將安排建築物的順序以匹配您的依賴關係,例如。資源,道,服務,Web應用程序...

你真的應該閱讀Sonatype的書:http://www.sonatype.com/books/mvnref-book/

希望這個小解釋能幫助你!

1

多模塊項目是實現此目的的方法。戰爭項目應該是一個子模塊,該項目應該使用gae-plugin。父項目只是公共庫,戰爭和其他可能包含的項目之間關係的描述符。在我們的應用程序中,我們有2個戰爭項目(1個用於我們的網站,1個用於某些地圖 - 減少在我們的應用程序的另一個版本上運行的東西),一個通用的代碼庫(打包成jar)和一個appengine-remote項目,實用功能。

父母只是一個「pom」的原因是它沒有作爲可運行代碼部署在任何地方。