我有一个多模块项目,其中有各种组件遵循相当标准的布局。例如:
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 :(得分: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)
...