我们有一个多模块POM,也作为对所涉及的所有子模块父POM。称它为MultiModulePOM
。我们有大约70个模块,编号为Module1
到Module70
。最佳方式* *提供的依赖
现在:这些模块的前30个在编译时需要一组JAR文件只有。那是 - scope=provided
。由于我们讨论的是一个集合的JAR文件,所以保持这30个模块的同步是非常繁琐的,并且一般来说,我不是一个复制定义的狂热粉丝。
所以,我陷入了dependency grouping的陷阱。看起来像一个好主意,但它不适用于provided
依赖关系。换句话说:如果我将模块中的依赖JAR分组在ExtDependencies
模块中,并且使Module1
依赖于ExtDependencies
,那么由ExtDependencies
引用的JAR将不会被传递添加到Module1
,因为它们的范围是provided
。
(如果最后一段是不正确的,请让我知道,因为它真的可以让我摆脱困境的)
,我可以看到的唯一的其他选择是创建一个名为父POM(例如)IntermediaryPOM
。 IntermediaryPOM
扩展为MultiModulePOM
,并将该组依赖JAR文件与scope=provided
一起使用。模块Module1
-Module30
然后延伸IntermediaryPOM
。
这似乎这样的伎俩,但我有三个问题是:
- 它增加了POM的另一层那我不知道真正需要的。
- 之后,在发布期间,我发现自己也必须安装/部署中介POM。
- 考虑一般的情况下:所述中间POM可以具有用于其它套的JAR(对于模块31-50)其他兄弟姐妹。因此,这个解决方案看起来不太好。
所以我的问题是 - 根据你的经验,最好的方法是什么?这种用例的任何已知最佳实践?
嗯。我没有想到...... scope = compile的常见依赖项,以及scope = provided的ExtDependencies。我现在要给它一个镜头... +1不管 – Isaac
而且它效果很好。非常感谢。 – Isaac
@Isaac很高兴听到这个。别客气。 –