java - 在 Java 中避免依赖 hell 的首选步骤是什么?

标签 java dependencies dependency-management

最近我在 dependency hell 上遇到了很多麻烦Java 中的问题。 是否有任何适当的程序来避免将来发生这种情况?

最佳答案

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

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

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

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

关于java - 在 Java 中避免依赖 hell 的首选步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095187/

相关文章:

java - 需要使用 appium 在 safari mobile 上自动播放视频

java - 在使用 dagger2 的示例中如何使用 okhttp 和 gson 进行改造

android - checkboxpreference android中的多重依赖

git - 跨 repo 依赖的最佳实践

java - 如何在 HK2 中定义 "default"实现?

java - 在 Windows 上设置 hadoop.tmp.dir 会出现错误 : URI has an authority component

java - 处理ajax请求并发送响应java servlet

Java Spring 依赖项

c++ - 调试版本中的 TRE 模糊正则表达式库运行时错误 : MSVCP90. dll 丢失

java - Spring Boot 测试用例不使用自定义转换服务