2014-04-30 100 views
1

我是Maven的新手,我們將基於ant的項目轉換爲Maven項目。每件事情都很好。另外我們需要明智地編譯源代碼包。爲了更清楚起見,我們在src/main/java文件夾中有三個包,分別是dao,svc和controller。我想首先編譯dao,然後通過給dao引用編譯svc,類似地通過僅給出svc的引用來編譯控制器,但不是dao。使用Maven進行封裝編譯?

最終目標是確保控制器不使用任何dao類,它們只能使用svc類。如果這種情況失敗,Maven構建必須失敗。

請建議。

+0

分割刀/ SVC /控制器爲多個行家項目和相應地設置的依賴關係。 –

+0

實現此目的的最簡單方法是將項目拆分爲三個(並且沒有控制器導入dao)。 – Thilo

回答

3

這聽起來像你需要一個multi-module maven project。創建一個父項目,其任務只是聚合你的三個模塊並提供一個構建。爲每個包創建一個模塊,然後定義各個POM文件中這些模塊之間的依賴關係。

Maven構建系統足夠聰明,可以根據您聲明的依賴關係知道構建模塊的順序。如果您沒有定義依賴關係(例如,在控制器和dao之間),則控制器模塊無法訪問dao模塊中的類。

最終源佈局將是這樣的:

your-project 
your-project/pom.xml <--- parent POM 

your-project/dao 
your-project/dao/pom.xml 
your-project/dao/src/main/... 

your-project/svc 
your-project/svc/pom.xml 
your-project/svc/src/main/... 

your-project/controller 
your-project/controller/pom.xml 
your-project/controller/src/main/... 
+0

謝謝。我認爲這可能有效。但可能無法將現有項目(已在生產中)劃分爲模塊。如果可能的話,你能否詳細說明一下。如何在svc中提供dao的參考? – Srikanth

+0

@sree要提供參考,請在您的SVC pom中包含一個指向您的DAO工件的「」條目。這聽起來像你需要做一些關於Maven的背景閱讀 - 這不是非常複雜,但是你不會在沒有基礎的基礎上走得太遠。 –

+0

謝謝鄧肯。我做到了。最後,我有一個與svc&dao jars分開的戰爭文件。應用程序按預期工作。但是我們可以將所有子模塊都編譯爲classes文件夾中的源文件,而不是將它們放在jar文件中嗎? – Srikanth

0

爲了更清楚一點,我們在src/main/java文件夾中有三個包,分別是dao,svc和controller。我想首先編譯dao,然後通過給dao引用編譯svc,類似地通過僅給出svc的引用來編譯控制器,但不是dao。

根據您的要求判斷,我想或多或少需要設置一個基於maven的多模塊項目。看看這些鏈接

  1. Link 1
  2. Link 2
+0

謝謝。我現在不可能分開這個項目。 – Srikanth