2013-02-08 136 views
1

我對Maven還是比較新的,我終於知道了我想要的,但現在我需要再次將它打破。Maven/eclipse項目結構

這裏是我的情況:

我需要寫兩個不同的服務器應用程序,它使用相同的核心功能;只是,這個框架做了什麼非常不同。一個服務器應用程序非常簡單 - 已經完成 - 而另一個服務器應用程序更復雜。

代碼是以依賴注入的風格編寫的(使用Guice,如果它很重要),所以它應該非常容易分解。

我的問題是這樣的:你將如何使用Maven在Eclipse中構建項目?你會設置三個不同的項目,如:

server-core 
server-appEasy 
server-appComplicated 

其中每個服務器都有它自己的pom。或者,你會把它全部保存在一個項目中嗎?我需要能夠輕鬆地重新編譯appEasy,比如從現在開始的一個月,而我在appComplicated上工作。 appEasy的類已經在一個子包中。注意:core如果沒有至少一個模擬依賴注入,將不會自行工作。它沒有main類。

所有的想法都很讚賞,即使在我沒有想到的事情上。

回答

1

我想有這樣的結構:

/server 
    /server-core 
     pom.xml 
    /server-appeasy 
     pom.xml 
    /server-appcomplicated 
     pom.xml 
    pom.xml 

所以每個項目都有自己的pom.xml,它允許你建立隔離該項目。

但是,父文件夾也有一個pom.xml,它將構建所有項目(如果運行)。您可以通過將項目作爲模塊包含在父項目中來實現。

E.g.在父pom.xml中

<modules> 
    <module>server-core</module> 
    <module>server-appeasy</module> 
    <module>server-appcomplicated</module> 
</modules> 

您還可以使用管理依賴於父POM蒂奧讓你集中外部的依賴和插件的版本號。

+0

感謝大家提出的模塊項目,這似乎是我需要的。我不知道這個功能。謝謝! – durron597 2013-02-08 15:56:10

0

我不是maven專家,但這裏是我的2美分。 每個項目都需要自己的pom。 您是否需要一起構建所有項目?在這種情況下,擁有一個擁有所有常見依賴項的父pom可能是有意義的。

編輯:在這種情況下,我覺得每個項目只有三個單獨的3個POM文件。

+0

既然簡單的項目完成了,我可能不會經常構建它。我只需要能夠,以防我需要調整它 – durron597 2013-02-08 15:25:56

0

有多種方法可以做到這一點,具體取決於您在部署時需要的方式。假設「服務器核心」是你的「服務器appEasy」和「服務器appComplicated」工件之間共享的文物,我會建議一些如下

  1. 創建一個Maven項目「服務器核心」
  2. 新增的成員名稱「服務器appEasy」和兩個模塊項目 「服務器appComplicated」
  3. 確保模塊項目其父設置爲「服務器核心」
  4. 最後,你應該有三個項目(每個項目有單獨的pom.xml),其中
    a。建立「服務器核心」也將構建模塊
    b。在需求基礎上獨立構建「簡單」和「複雜」模塊也將構建服務器核心。

希望這會有所幫助!

+0

我不認爲這將工作,因爲父項目應該包裝「POM」,對吧? – durron597 2013-02-08 21:17:10

+0

你是對的,'cowls'的回答是你可能想要做的和我想到的。 – Horizon 2013-02-09 02:30:40

1

我會建議把所有的結構都作爲一個Maven Multi模塊項目。

父項目將有三個項目作爲模塊,第三方依賴項版本和項目版本作爲屬性。

然後,在server-appComplicated和server-appEasy中,我將爲服務器核心添加一個依賴關係。

通過這種方式,您將獲得: 1-一個編譯的根項目(父項),它將生成兩個服務器和core-lib。 2-處理版本號和公共依賴關係的點。

我希望它有幫助