我的项目由5个子项目组成。一个是战争,另外四个是罐子。基本上战争项目需要全部4个jar项目和它们的依赖项。如何处理Maven中的子项目依赖关系
我可以剥夺依赖关系,使其具有诸如war-> A-> B-> C-> D之类的东西。每个子项目添加他们的外部依赖关系(spring,struts,hibernate),最终战争获得了运行所需的一切。
这看起来很好组织和正方形,但后来我问自己,如果这是非常实际的做出改变。
想象一下,我必须更改项目D中的一行代码,而不会对Maven依赖关系进行任何更改。我将不得不重新发布项目D,但是我必须重新发布项目C,B,A和战争,以便在他们的pom文件中反映这种变化。这可能会很长并且很烦人,特别是如果您必须快速发布新版本以修复生产中的某些内容。
我可以让战争取决于所有4个项目,所以我只需要在war pom文件中更改项目D的版本号。但是,我有项目A间接依赖项目D 1.0和战争指定项目D 1.1。我认为战争直接依赖会在这种情况下赢得胜利吗?
这将使新的战争版本更快,但它也会搅乱我的子项目依赖关系,因为它们会过时。
什么是可以接受的方式来处理这种情况?
嗨Gweebz。感谢您的详细回复。我不需要单独发布每个子项目,所以我会仔细看看这个我不知道的聚合器概念。这些模块包含所有业务和数据代码,并且必然会定期更改。另一个解决方案是按照你所说的排除传递依赖关系,我没有想到这一点。感谢您对此的关注。 – IceGras 2010-09-07 15:31:46
由于不需要独立发布每个模块,我强烈建议使用Aggregator解决方案。它的图案非常适合您的场景。很高兴我能帮上忙 :) – 2010-09-07 15:37:18