您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

您是否应该在客户端jar中提供依赖库?

您是否应该在客户端jar中提供依赖库?

你应该 捆绑任何第三方jar文件到您自己的罐子作为一位超级罐子,但它是很好的,包括所有所需在分发比方说在lib目录或什么都罐子的副本。

这样做的主要原因是您的客户可能正在使用某种形式的依赖管理系统(maven / ivy等),并且提供实际上不属于您的项目的包和类会使这些方案无效。

有一种选择,那就是使用诸如maven shade plugin之类的东西将您的依赖项重新定位到您自己的包名称空间中。当然,这样做的缺点是您将增加库的代码大小,但从好的方面来说,您几乎可以保证依赖版本,而不会影响客户端可能正在使用的任何其他库。

回应马库斯·莱昂评论

没有捆绑/重新定位的可能解决方案:

最后,要真正确保您具有所需的依赖关系非常困难,因为Java是一种后期绑定语言,因此有可能使您的依赖关系(即使是捆绑在一起)被包括在类路径上的其他版本的人覆盖了(即使是捆绑在一起的)。

注意:我最近度过了 糟糕的一天,试图找出为什么我们的一个应用程序未能找到新版本的log4j。原因:有人试图提供帮助,将其捆绑到一个随机的,完全无关的广口瓶中。

其他 2022/1/1 18:31:16 有569人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶