在Java中避免依赖地狱的首选步骤是什么?

时间:2016-06-29 09:14:36

标签: java dependencies dependency-management

最近我在Java中出现dependency hell问题时遇到了麻烦。 是否有任何适当的程序可以在将来避免它?

1 个答案:

答案 0 :(得分:4)

首先,使用maven或gradle等依赖管理器。没有包含第三方jar的lib文件夹,显然没有从其他项目到您的复制类或* .java文件。很抱歉,如果这是显而易见的,但我看到很多使用这种技术构建的项目。

然而,下一阶段是依赖关系的优化。您可以使用库A和B都使用库C.如果两者都使用相同版本的库C,则可以。如果它们依赖于库C的不同版本,地狱就会开始。在大多数情况下,这不会导致任何问题,你甚至可能不知道这个事实。但有时它可能会导致问题。为避免这种情况,我建议您不时检查项目的依赖关系树,查找重复项,如果存在,请使用依赖关系管理器的排除指令来排除旧版本。

然而,这可能会失败,因为这些版本的库不兼容。在这种情况下,没有通用的方法来解决问题。有时您必须降级一个(或几个)依赖项以使它们一起工作并等待使用较新版本库C的较新版本(在我们的示例中)。

2016年java程序员的好运是,大多数工具通常都是开源的,而且很多工具都可用于贡献(例如通过github),所以有时你可以贡献自己的修复并帮助自己和其他开发人员获得更新的版本更快。