2009-05-22 97 views
1

我有一個多模塊項目,其中有各種組件遵循相當標準的佈局。例如:跨項目對Maven依賴關係進行分組

 
     root (pom) 
      ... 
      module-NN (pom) 
      module-NN-launcher (jar) 
      module-NN-runtime (jar) 
      ... 

(那裏有許多模塊-NN項目)

每個* -launcher項目採用了專有的API推出提供了一個通用的API框架。然後將* -runtime項目加載到此框架中以「做東西」。

至於目前的情況,我有每個* -launcher/pom.xml中定義的啓動器的依賴關係。同樣,我在* -runtime/pom.xml中有通用的API引用。我可以更新項目結構是這樣的:

 
    root (pom) 
     launcher (pom) 
      ... 
      module-NN-launcher (jar) 
      ... 
     runtime (pom) 
      ... 
      module-NN-runtime (jar) 
      ... 
     applications (pom) 
      ... 
      module-NN (pom) 
      ... 

並把相關的依賴性在啓動/運行的pom.xml文件,但是這使得項目的佈局更直觀。

有沒有人遇到過這樣的問題?你可以提供什麼樣的建議來產生有意義的佈局而不需要在類似的項目中重複細節?

回答

0

我已經做了大約90%類似的事情。

考慮創建一個名爲「runtime-common」的項目。在該pom.xml中,添加運行時通用的所有運行時依賴關係。

在pom.xml的模塊-NN-運行時,添加此

<parent> 
     <groupId>FOO</groupId> 
     <artifactId>runtime-common</artifactId> 
     <version>1.0.0</version> 
    </parent> 

任何你添加到運行時常見的將被添加到子項目運行時的常見的。這並不影響根項目構建所有模塊的能力。

你會用這樣的事情結束了:

ROOT (POM) 
    Launcher-COMMON (POM) 
    ... 
    Launcher-1 (Jar) 
    ... 
    Runtime-COMMON (POM) 
    Runtime-1 (Jar) 
    ...  
    Runtime-2 (Jar) 
    ... 

你實際上並不需要不斷髮射和運行時的公共項目,如果你不希望出現在那裏。在這種情況下,做這樣的事情

ROOT (POM) 
    COMMON (POM) 
    Runtime-COMMON (POM) 
     ...  
    Launcher-COMMON (POM) 
     ...  
    Launcher-1 (Jar) 
    ...  
    Runtime-1 (Jar) 
    ...  
    Runtime-2 (Jar) 
    ...