跨项目分组maven依赖项

时间:2009-05-22 09:15:29

标签: maven-2 dependencies module

我有一个多模块项目,其中有各种组件遵循相当标准的布局。例如:

      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文件中,但这会使项目的布局更不直观。

以前有人遇到过这类问题吗?在制作有意义的布局时,您可以提供哪些建议而不会在类似项目中重复细节?

1 个答案:

答案 0 :(得分:0)

我做了大约90%相似的事情。

考虑创建一个名为“runtime-common”的项目。在该pom.xml中,添加运行时通用的所有运行时依赖项。

在module-NN-runtime的pom.xml中,添加此

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

您添加到runtime-common的任何内容都将添加到子项目中以用于runtime-common。这不会影响根项目构建所有模块的能力。

你最终会得到这样的东西:

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)
    ...