微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala 多模块项目中的依赖冲突

如何解决scala 多模块项目中的依赖冲突

我有以下项目结构。

project
 |_build.properties
 |_plugins.sbt
Core
Module1
Module2
build.sbt

在 Module1 和 Module2 中,我在不同版本中使用相同的依赖项。然后我将 2 个模块与 Core 模块聚合在一起。然后一个依赖项被另一个版本驱逐。如何保留两个依赖版本?

更新:预期的依赖树如下:

core_1.0-SNAPSHOT
-module1_1.0
--org.milyn:milyn-smooks-core:1.1
-module2_1.0
--org.milyn:milyn-smooks-core:1.5.2

module1_1.0-SNAPSHOT
-org.milyn:milyn-smooks-core:1.1

module2_1.0-SNAPSHOT
-org.milyn:milyn-smooks-core:1.5.2

而且,我得到的内容如下:

    core_1.0-SNAPSHOT
    -module1_1.0
    --org.milyn:milyn-smooks-core:1.1 (evicted by 1.5.2)
    -module2_1.0
    --org.milyn:milyn-smooks-core:1.5.2
    
    module1_1.0-SNAPSHOT
    -org.milyn:milyn-smooks-core:1.1
    
    module2_1.0-SNAPSHOT
    -org.milyn:milyn-smooks-core:1.5.2

我怎样才能无视驱逐?

解决方法

在 99% 的情况下,您不希望具有相同依赖项的两个版本。假设它们包含相同的类(如同名),它将导致运行时错误,因为只会加载一个版本(先来先加载)。

您可能想要做的是:

  • 要么让驱逐发挥作用(它应该选择最新版本)
  • 或者,在所有模块中定义相同的版本
  • 或者,在您的“核心”模块中定义一些 dependencyOverrides 以强制一个版本(可以是“Module1”、“Module2”,甚至是另一个)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。