Scala 多模块项目中的依赖冲突
Dependency conflicts in scala multi moduled projects
我的项目结构如下。
project
|_build.properties
|_plugins.sbt
Core
Module1
Module2
build.sbt
在Module1和Module2中,我在不同的版本中使用了相同的依赖。然后我将 2 个模块与核心模块聚合在一起。然后一个依赖被另一个版本驱逐。如何保留两个依赖版本?
更新:预期的依赖树如下:
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
以强制使用一个版本(可以是“模块 1”、“模块 2”甚至另一个)
我的项目结构如下。
project
|_build.properties
|_plugins.sbt
Core
Module1
Module2
build.sbt
在Module1和Module2中,我在不同的版本中使用了相同的依赖。然后我将 2 个模块与核心模块聚合在一起。然后一个依赖被另一个版本驱逐。如何保留两个依赖版本?
更新:预期的依赖树如下:
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
以强制使用一个版本(可以是“模块 1”、“模块 2”甚至另一个)