我们有一个多模块 POM,它也作为所有涉及的子模块的父 POM。调用它MultiModulePOM
。我们有大约 70 个模块,例如编号Module1
为Module70
.
现在:这些模块中的前 30 个仅在编译时需要一组 JAR 文件。那就是 - scope=provided
。由于我们讨论的是一组JAR 文件,因此让这 30 个模块保持同步非常乏味,而且总的来说,我不喜欢到处复制定义。
所以,我陷入了依赖分组的陷阱。似乎是个好主意,但它不适用于provided
依赖项。换句话说:如果我将依赖的 JAR 分组到一个名为 的模块ExtDependencies
中,并使Module1
依赖于ExtDependencies
,则引用的 JARExtDependencies
不会被传递到Module1
,因为它们的范围是provided
.
(如果最后一段不是真的,请告诉我,因为它真的可以让我摆脱困境)
我能看到的唯一其他选项是创建一个名为 (for example) 的父 POM IntermediaryPOM
。IntermediaryPOM
扩展MultiModulePOM
并使用scope=provided
. 模块Module1
-Module30
然后扩展IntermediaryPOM
.
这似乎可以解决问题,但我有三个问题:
- 它增加了另一层 POM,我不确定它是否真的需要。
- 后来,在分发期间,我发现自己也必须安装/部署中间 POM。
- 考虑一般情况:中间 POM 可能有其他兄弟用于其他 JAR 集(对于模块 31-50)。因此,这个解决方案似乎不能很好地扩展。
所以我的问题是 - 根据你的经验,解决这个问题的最佳方法是什么?这种用例的任何已知最佳实践?