tri*_*oid 5 java jar dependency-management maven maven-shade-plugin
对我来说很简单:我正在使用2个非常流行但有冲突的scala库:Spark SQL和JSON4s.每个都取决于Jackson XML解析器的不同版本.
因为除了我自己的程序没有人使用JSON4s,一个简单的解决方案是迁移软件包org.json4s.jackson,并com.fasterxml.jackson到新的位置.
但是,maven-shade插件只能在打包过程中执行此操作,因为所有测试和IDE运行都在此之前发生.无论是在IDE中的mvn-test还是scala测试中运行,这仍然会导致所有测试失败.
是否有一个插件可以集中管理所有三种情况的包重定位策略:JAR-packaging/mvn-test/IDE-run?我整天都在网上搜索,找不到答案.
我们通过重新编译(和修补)以对齐库来解决该问题。任何与阴影相关的内容都将倾向于一个版本而不是另一个版本,这意味着您可能在一个库中修复的内容可能会在另一个库中被破坏。
对于 OSGi 阵营的评论,是的,这就是 OSGi 想要解决的问题,但它在 Spark 环境中效果不佳:)
您是否考虑过降级两个版本之一以调整资源?通常,其中一个库会首先发布,而第二个库则落后一点......有时,可以通过运行与“最后发布”项目一致的一致但较旧的版本来找到答案。
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |