Scala sbt:从build.sbt交叉发布

Scala sbt:从build.sbt交叉发布,scala,sbt,Scala,Sbt,目前,我正在使用SBT脚本插件进行测试。要将插件发布到本地存储库中,请使用build.sbt中的以下代码段: crossScalaVersions := Seq(scalaVersion.value,"2.11.7") scriptedDependencies := { val local = publishLocal.value } 通过这种方式,人工制品将发布到本地存储库中,但仅针对版本scalaVersion.value。我想为两个scala版本交叉发布它。我该怎么做?正如

目前,我正在使用SBT脚本插件进行测试。要将插件发布到本地存储库中,请使用build.sbt中的以下代码段:

crossScalaVersions := Seq(scalaVersion.value,"2.11.7")

scriptedDependencies := {
      val local = publishLocal.value
}

通过这种方式,人工制品将发布到本地存储库中,但仅针对版本
scalaVersion.value
。我想为两个scala版本交叉发布它。我该怎么做?

正如@srjd在评论中提到的,您可以使用
+
前缀

如本文所述

要针对CrossScalarVersions中列出的所有版本进行构建,请在要使用+运行的操作之前加上前缀。例如:

使用此功能的典型方法是在单个Scala版本(无+前缀)上进行开发,然后偶尔在发布时交叉构建(使用+)

这适用于任何操作,包括
publisLocal

> + publishLocal

您是否将
+publishLocal
+
一起使用?应该这样做。此外,我建议不要在
交叉尺度厌恶
的定义中提及
尺度厌恶
。那是自找麻烦。明确写下
“2.10.6”
或您想要的内容。感谢您的回复。但问题是build.sbt,而不是命令行。有一个
TaskKey publishLocal
+
由sbt解释器提供。例如,您可以通过在sbt控制台中键入
help+
进行检查
scriptedDependencies
不是这样使用的
sbt
可以交互调用,也可以通过命令行上的一个或多个命令调用。这就是你要写
+publishLocal
的地方。例如,
$sbt+publishLocal
我认为这是一个有效的问题。无论问题的作者为什么想这样做,答案都是有用的。我不买
sbt
“意味着以交互方式调用”参数,因为它还为您提供了编写自己任务的API和方法。在您自己的自定义任务中,您可能需要以编程方式交叉发布一些模块。我现在非常需要,谢谢你的回复。如前所述,问题在于build.sbt,而不是命令行。有一个TaskKey publishLocal,并且+由sbt解释器提供。例如,您可以在sbt控制台中键入help+进行检查
> + publishLocal