我需要将一个.jar添加为sbt Scala项目的非托管依赖项(它是java-stellar-sdk)。只要我不运行INCLUDE_PATH += -I/path/to/your/cimg
LIBS += -L/usr/X11R6/lib -lm -lpthread -lX11
,一切都运作良好。 .jar文件中似乎有一个Mockito版本与我在项目中使用的版本冲突。我发现很多错误,某些Mockito匹配器找不到,但是没有lib文件夹中的.jar,一切正常。
有没有办法告诉sbt它应该忽略.jar中的某些库,或者托管依赖项优先?我还发现了this related question,但显然它对我没有帮助。
替代解决方案也会有很大帮助。是否有可能隔离罐中的库,使我能够让某个包对外部可见?
更新: .jar包含Mockito 2,但我的项目使用Mockito 1,所以这是一个非常简单明显的冲突,我可以通过升级到Mockito 2来解决(我尝试了它作品)。然而,问题仍然存在:是否有另一种合理的方法可以隔离.jar中的Mockito依赖关系,以防止我干扰我的项目,以防我无法或不想解决冲突购买切换到更新的有问题的库的版本。也许改变.jar来重命名冲突的包?我不知道。这样的事情。
我知道这是一个非常普遍的问题,可能已在其他地方进行了深入探讨。但是,我没有找到任何让我满意的东西。当然也赞赏与该主题的相关讨论的链接。
答案 0 :(得分:3)
我可以想到3种方法(从简单到困难排序):
从jar文件中手动删除mockito 2 由于jar只是一个zip文件,您可以将其解压缩,删除所有冲突的文件,然后重新打包。
自己从源代码编译该jar,并将mockito设置为测试依赖项(应该如此)。如果您这样做,请考虑使用您的更改打开公关,以解决社区问题
答案 1 :(得分:1)
你应该可以安排你的Mockito 1课程出现在课程路径上的Mockito 2课程之前。这将使你的课程赢得任何冲突。