为多项目中的子项目指定不同版本的 sbt?

Posted

技术标签:

【中文标题】为多项目中的子项目指定不同版本的 sbt?【英文标题】:Specify different version of sbt for a subproject in multi-project? 【发布时间】:2014-01-16 12:17:37 【问题描述】:

我有一个包含几个子项目的多项目。

根项目的project/build.properties 包含

sbt.version=0.13.0

事实证明,由于依赖问题,其中一个子项目仅适用于版本0.12.4

我将带有该版本的build.properties 放入其目录中,但它没有更改此项目的 sbt 版本。

我该如何正确地做到这一点?有可能吗?

【问题讨论】:

你把另一个build.properties0.12.4 放在[subproject]/project/build.properties 中了吗? @JacekLaskowski,是的。 sbt 不支持此用例。 @jsuereth,有没有办法做到这一点? 【参考方案1】:

目前,sbt 允许在同一构建中的项目之间建立深度任务级依赖关系。因此,虽然每个项目都有自己的目录,但它们共享一个用于构建的类加载器,其中包含所有定义。

这限制了您不能让构建共享不兼容的版本。

将来可能会取消此限制,但现在我会执行以下操作之一:

    继续使用 sbt 0.12.4 进行构建 迁移项目之间的所有通信以通过 Ivy 进行。使用包装脚本进行 2 个构建,该脚本以正确的顺序运行它们。

【讨论】:

您能否更彻底地解释一下2)?

以上是关于为多项目中的子项目指定不同版本的 sbt?的主要内容,如果未能解决你的问题,请参考以下文章

SBT 多项目构建:针对不同子项目的 2 个不同版本的 sbt play 插件

SBT 多项目构建中的 build.properties

如何强制 Scala 使用不同的库版本?

如何解决具有不同包装常春藤类型的sbt中的依赖关系?

Sbt 没有从当前目录加载项目

scala 参考 sbt 项目版本