【发布时间】:2014-06-01 01:48:37
【问题描述】:
用于指示编译库的 Scala 版本的底层机制是将 _
附加到库的名称中。这种相当简单的方法允许与 Maven、Ant 和其他构建工具的用户进行互操作。 -- sbt Documentation: Cross-Build Publishing Conventions
虽然这是一种简单的方法,但与 Maven 和其他构建工具的互操作性仍有待改进。因为artifactId 不同(例如scalatest_2.9.0 和scalatest_2.10.0),Maven 将它们视为不同的工件。 Maven 的依赖解析机制因此受到损害,同一工件的多个版本(针对不同的 scala 版本构建)可能会出现在类路径上。
为什么不把 scala 版本放在分类器中呢?这似乎是分类器的主要预期用例之一:
分类器允许 [Maven] 区分从同一个 POM 构建但内容不同的工件。作为这个元素的动机,考虑一个项目,它提供了一个针对 JRE 1.5 的工件,但同时也提供了一个仍然支持 JRE 1.4 的工件。第一个工件可以配备分类器 jdk15,第二个工件配备 jdk14,以便客户端可以选择使用哪一个。 -- Maven Documentation: POM Reference
【问题讨论】:
-
我记得这个决定是几年前做出的,我几乎可以肯定使用分类器被讨论过并被拒绝,所有人都同意这不是一个可行的解决方案。我不记得是为什么!
-
@SethTisue 感谢您的提示。