【问题标题】:How to use Scala Virtualized in a Maven project with Scala-2.10?如何在 Scala-2.10 的 Maven 项目中使用 Scala Virtualized?
【发布时间】:2026-01-04 17:50:02
【问题描述】:

我想在基于 Maven 的 Scala-2.10 项目中使用 Scala Virtualized。 Scala Virtualized wiki 仅包含 SBT 的说明,建议您只需在 build.sbt 中将 scalaOrganization 从“org.scala-lang”更改为“org.scala-lang.virtualized”。这表明对于 maven,您需要更改 pom.xml 文件中 scala-library 的 <groupId>。似乎 Scala Maven 插件确定了从您使用的 scala 库中获取的 scala-compiler,因为我在我们的任何 pom.xml 文件中都没有提到 scala-compiler。在任何情况下,单独更改 pom.xml 文件中的 scala-library 的 groupId 都不起作用。 我确实确保父 pom.xml 中的 scala-library varsion 对应于 Scala Virtualized (2.10.2-RC1) 存在的版本。

我还需要做什么(其他)?

【问题讨论】:

    标签: scala maven maven-3 maven-plugin scala-2.10


    【解决方案1】:

    我已经在这里开票了:http://goo.gl/anZyE 并在这里准备了一个补丁:http://goo.gl/U43qs 有人测试吗?

    【讨论】:

    • 我遇到了issue #70。我们在 maven-scala-plugin-2.15.2 上。如果我只是升级到已发布的 scala-maven-plugin-3.1.5,则构建失败,因为它似乎无法看到某些类。如果我用当前推荐的<plugin> 声明更新我们的 pom.xml。然后我在 2.15.2 和 3.1.5 中的一个测试类中出现 duplicate class 错误。导致问题 #70 的 pom.xml 差异是 process-resources 阶段内的 <goal>add-source</goal> 行。我们的项目建立在没有它的 2.15.2 之上。
    【解决方案2】:

    scala-library, scala-compiler 的 groupId 是hard-coded into the plugin。 scala-compiler 的信息(版本,...)是从 scala-library 依赖项中计算出来的。

    您可以打开ticket 并要求支持其他 groupId(可能是可配置的或非硬编码的)。您可以分叉、进行更改并提交补丁/拉取请求。

    更新:scala-mavent-plugin 3.1.6 包含来自 evantill 的补丁(谢谢) 所以你可以覆盖默认的scalaOrganization

    【讨论】: