2009-05-22 99 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) 
    ...